又是一节体育课的时间了,有 $n$ 个同学排成了一排。他们都很讨厌排在第一个位置的同学,于是后面的同学中比第一个高的都会产生一个高兴值,这个高兴值等于他的身高减去第一个同学的身高。当然比第一个同学矮的同学产生高兴值为 0。
现在体育老师来了,他拥有神奇的魔法,现在他能做如下的三件事:
1:询问某段区间高兴值最大的那个是多少。 2:把某两个同学交换一下位置。 3:选取一段区间的人,把第一个人身高加上 $t$,第二个加上 $2t$,第三个加上 $3t$ 以此类推。
但是体育老师不会数数,于是他找到你了,对于每一个询问,他要你帮他求出那个值。
输入格式
第一行两个整数 $n, m$ 表示有 $n$ 个人,有 $m$ 个操作。 第二行 $n$ 个整数,顺序输入每个人的身高。(身高 $\le 10^8$) 接下来 $m$ 行,每行第一个数为一个 $type$ 表示是做哪一件事情。
- 如果 $type=1$,那么接下来有两个整数 $l, r$,表示询问这段区间的最大的高兴值。
- 如果 $type=2$,接下来两个整数 $a, b$,表示交换这两个位置的人。
- 如果 $type=3$,接下来三个整数 $l, r, t$,表示把第 $l$ 个人的身高增加 $t$,$l+1$ 个人增加 $2t \dots$ 第 $r$ 个人增加 $(r-l+1)t$,$0 \le t \le 10000$。
输出格式
对于每个询问按照顺序输出每个操作 1 的答案。
数据范围
- 有 20% 的数据:$n, m \le 5000$
- 另有 10% 的数据:没有第三种操作
- 另有 20% 的数据:没有第二种操作
- 对于 100% 的数据:$n, m \le 100000$
样例
样例输入 1
6 8 109 827 100 530 10 826 3 1 6 1 2 2 6 1 2 4 1 2 3 2 2 6 1 2 6 1 2 5
样例输出 1
431 0 817 431 719