1997 - 埴轮兵团
描述

磨弓下达命令让埴轮们站成一行。不妨认为它们站在了一个数轴上,每个埴轮的位置就是它脚下数轴的数字。磨弓会告诉你,第 i 个埴轮的位置为 a_i 。**不保证** \bm {a_i} **升序**。

数轴的长度是有限制的,具体的范围是 [-k,k] 。也就是说,如果某个埴轮移出了这个范围,它就脱离了这个队列了,并且不会再次回到队列当中。

为了训练埴轮,磨弓给埴轮们下达了 m 个指令,有以下 3 种:

- 指令 1:**全体埴轮**向数轴的正方向移动 x 个单位长度。

- 指令 2:**全体埴轮**往数轴的反方向移动 x 个单位长度。

- 指令 3:依次报数,统计目前队列里一共有多少个埴轮。

但是磨弓发现,埴轮兵团的大小实在是太大了,以至于执行这些操作变得非常缓慢。尽管如此,磨弓仍然希望你告诉她所有指令 3 的结果。


输入

第一行共有 3 个整数 n, m, k,含义如题面所示。

第二行共有 n 个整数 a_1, a_2, \cdots, a_n,表示每个埴轮的位置。

接下来 m 行,有 1 或者 2 个正整数,描述一条指令。首先是一个整数 \operatorname{op},表示这条指令的类型。如果 1 \leq \operatorname{op} \leq 2,接下来还会输入一个整数 x


输出

对于每条指令 3 ,输出一个整数,表示目前还在队列中的埴轮的数目。

样例

输入

3 4 3
-1 1 2
2 3
3
1 5
3

输出

2
1
提示

样例 1 说明

一共有三个埴轮。初始时,它们的站位分别是 [-1,1,2]

- 第一次操作后,所有埴轮向左移动 3 格,位置变成了  [\underline{\bm{-4}},-2,-1] 。第一个埴轮被移出了数轴。

- 第二次操作后,输出当前的埴轮数目,为 2 个。

- 第三次操作后,所有埴轮向右移动 5 格,位置变成了 [3,\underline \bm4] ,第二个埴轮被移出了数轴。

- 第四次操作后,输出当前的埴轮数目,为 1 个。

数据规模与约定

- 对于 30\% 的数据,1 \leq n, m \leq 5\times 10^3

- 对于另外 20\% 的数据,1\le k\le 500

- 对于 100\% 的数据,1 \leq n, m \leq 3\times 10^51 \leq k, x \leq 2 \times 10^9-k \le a_i \le k


题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 33
通过次数 11