3005 - 体育课

   又是一节体育课的时间了,有n个同学排成了一排。他们都很讨厌排在第一个位置的同学,于是后面的同学中比第一个高的都会产生一个高兴值,这个高兴值等于他的身高减去第一个同学的身高。当然比第一个同学矮的同学产生兴奋值为0。

现在体育老师来了,他拥有神奇的魔法,现在他能做如下的三件事:

   1:询问某段区间高兴值最大的那个是多少。
   2:把某两个同学交换一下位置。
   3:选取一段区间的人,把第一个人身高加上t,第二个加上2t,第三个加上3t以此类推。

但是体育老师不会数数,于是他找到你了,对于每一个询问,他要你帮他求出那个值。

输入

第一行两个整数n,m表示有n个人,有m个操作。 第二行n个整数,顺序输入每个人的身高。(身高<=10^8) 接下来m行,每行第一个数位一个type表示是做哪一件事情。 如果type=1,那么接下来有两个整数l,r,表示询问这段区间的最大的高兴值 如果Type=2,接下来两个整数a,b,表示交换这两个位置的人 如果type=3,接下来三个整数l,r,t,表示把l个人的升高增加t,l+1个人增加2t…第r个人增加(r-l+1)t, (0<=t<= 10000)

输出

对于每个询问按照顺序输出每个操作1的答案。

样例

输入

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

输出

0
4
6
9
13

提示

对于100的数据:n,m<=100000

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