3949: 数据(data)

内存限制:512 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:6 解决:5

题目描述

给定一个长度为 $n$ 的序列。你需要支持一下两种操作。 - 操作一:将区间 $[l,r]$ 中每个数加上 $c$,并对 $P$ 取模。形式化的,$\forall i\in[l,r],a_i\leftarrow (a_i + c)\bmod P$。 - 操作二:询问区间 $[l,r]$ 中,$a_i > a_{i+1}$ 的个数。形式化的,求出 $\sum\limits_{i=l}^{r-1}[a_i> a_{i + 1}]$。 对于 $100\%$ 的测试点, $1\le n\le 10^6, 1\le P\le 10^9,0\le a_i,c < P,1\le l\le r\le n, 1\le m\le 2n$。 本题共 $20$ 个测试点,每个测试点 $5$ 分。 对于测试点 $1,2$,$n\le 1000$。 对于测试点 $3\sim 6$,$c\le 1,P\ge 5\times 10^5$。 对于测试点 $7,8$,$l =1,r=n$。 对于测试点 $9\sim 12$,对于所有操作一,$l = 1,r=n$。 对于测试点 $1\sim 19$,$n\le 10^5$。

输入

第一行三个正整数依次为 $n,m,P$。 接下来一行 $n$ 个整数表示序列 $a$。 接下来 $m$ 每行表示一个操作。如果是操作一,格式为 1 l r c,如果是操作二,格式为 2 l r

输出

对于每个操作二,输出一行一个整数表示答案。

样例输入 复制

5 5 10
7 4 2 2 4
2 1 3
1 2 3 3
2 3 5
1 2 5 8
2 1 4

样例输出 复制

2
1
3