409006 - 区间乘与加

已知一个数列,需要进行以下3种操作。 (1)将某区间每一个数乘上 x。 (2)将某区间每一个数加上 x。 (3)求出某区间每一个数的和。

输入

第一行包含三个整数 n,m,p(n≤105,m≤105),分别表示该数列数字的个数、操作数和模数。 第二行包含n个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来m行每行包含若干个整数,表示一个操作,具体如下。 操作1:1 x y k表示将区间[x,y] 内每个数乘上k。 操作2:2 x y k表示将区间[x,y] 内每个数加上k。 操作3:3 x y表示输出区间[x,y] 内每个数的和对p 取模所得的结果。

输出

输出包含若干行整数,即为所有操作3的结果。

样例

输入

5 5 38
1 5 4 2 3
2 1 4 1
3 2 5
1 2 4 2
2 3 5 5
3 1 4

输出

17
2
时间限制 1 秒
内存限制 128 MB
统计
上一题 下一题