#5050. [Lydsy1709月赛]建造摩天楼

内存限制:256 MiB 时间限制:10 Sec

题目描述

属于小Q管辖的n座摩天楼从左往右排成一排,编号依次为1到n,第i座摩天楼的高度为h_i。小Q会进行m次以下两种
操作之一:
1 l r,询问h_l+h_{l+1}+...+h_r。
2 l r,对于第l到r的每座摩天楼i,如果上次操作结束时h_i<h_{i-1},则将第i座摩天楼再往上造一层,即h_i增加1。
你可以认为h_0=正无穷。
请写一个程序回答小Q的每个询问。注意,此题操作一和操作二弄反了

输入格式

第一行包含两个正整数n,m(1<=n<=100000,1<=m<=min(100000,2n)),分别表示摩天楼的数量以及操作的数量。
第二行包含n个正整数h_1,h_2,...,h_n(1<=h_i<=n),表示每座楼的高度。
接下来m行,每行三个正整数op,l,r(1<=op<=2,1<=l<=r<=n),分别表示每个操作。
因为小Q觉得错乱不齐的建筑更加美观,因此你可以认为数据是完全随机的。

输出格式

对于每个询问输出一行一个整数,即区间内所有摩天楼的高度之和。

样例

样例输入


			
5 8
1 3 2 2 4
1 2 4
2 2 2
2 3 3
2 4 4
1 1 3
2 1 1
2 2 2
2 3 3

样例输出


			
3
3
2
2
3
3

数据范围与提示