#1094. 2-03G. JM的无情铁手

内存限制:512 MiB 时间限制:750 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: LittleFall

题目描述

B站up主,我只看,刘JM真的很强。 ——Fall.齐 先生

菜的一批的JM先生最近研发出了一种对数组的新操作,他称为无情铁手,形式化的定义如下:

  1. 设数组AA长为nn,元素分别为a1,a2,a3,...ana1,a2,a3,...an
  2. 如果n=1n=1,则操作结束之后AA不变
  3. 如果n>1n>1,则首先将AA按下标的奇偶拆分成两个数组,即数组A1:a1,a3,a5,...A1:a1,a3,a5,..., 数组A2a2,a4,a6,....A2:a2,a4,a6,....。然后分别对A1A1A2A2执行无情铁手操作,再把A2A2接在A1A1的后面就是操作完成后的A。

现在JM先生有一个初始时长为nn的数组AA,元素为1,2,3,4,...,n1,2,3,4,...,n

JM先生有qq个询问,他想知道对于l,r,u,vl,r,u,v,执行一次无情铁手操作后的数组AA,下标在[l,r][l,r]区间、值在[u,v][u,v]区间内的值的总和是多少。

因为结果可能太大,需要对一个给定的整数mm取模。所有询问相互独立。

如果你能AC这道题目,你就会受到JM先生无情铁手的祝福,++节操。

输入格式

输入第一行有三个整数n,q,m,分别表示数组长度,询问个数,模数。

之后有q行,每行4个整数l,r,u,v,表示需要统计的下标区间与值域区间。

输出格式

输出qq行,每行一个整数,表示该次询问的统计答案对mm取模后的结果。

样例

输入样例

2 5 10000
1 2 2 2
1 1 4 5
1 1 2 5
1 1 1 3
1 2 5 5

输出样例

2
0
0
1
0

数据范围与提示

1n1e181q1e51m1e91≤n≤1e18,1≤q≤1e5,1≤m≤1e9

1lrn1uv1e181≤l≤r≤n,1≤u≤v≤1e18