5624 - 提高:拆大坝

通过次数

1

提交次数

1

Time Limit : 1 秒
Memory Limit : 256 MB

在一条河流上有很多大坝,每个大坝拦截了河流并蓄水,当然我们假设每个大坝的建造海拔是一样的,现在我们需要在某个区间内的大坝拆除,当拆掉后,其之间的水流回往低处留,导致之间的水位一样高,现在告诉你需要做如下的操作

 1  l  r 表示将第l 个大坝和第r 个大坝之间所有的大坝拆走。(保证:1≤l<r≤n)

 2  i 表示查询第i 个大坝旧址上的水量。

Input

输入包含m+2 行。 第一行输入两个正整数1≤n,m≤2×10^5 ,分别表示大坝中水池的个数,以及操作的次数。 第二行n 个整数 ai​ (1≤ai ≤10^9 ),表示每个水池初始时的水量。 接下来m 行,每行第一个整数 op(1≤op≤2) 表示操作。

∙ 如果 op=1,则表示取掉大坝操作,再输入两个正整数 
l,r (1≤l<r≤n)。
∙ 如果 
op=2,则表示查询操作,再输入一个正整数i (1≤i≤n)。
(注意:已经拆掉的在以后的操作中都是“被拆掉”的状态。)
(数据保证至少有一次查询操作。)

Output

输出包含若干行,每行一个整数,强制取整即可,表示对每个op=2 的询问做出的回答。

Examples

Input

4 6
1 2 4 5
1 1 3
2 1
2 3
1 1 4
2 1
2 4

Output

2
2
3
3