#434. 伏犬的数理计算

伏犬的数理计算

题目描述

被高数整得死去活来的 伏犬 总算开始学数理统计了。他不想做作业,所以把作业丢给了你。

你需要对一个长度为 NN 的数列做以下三种操作。

  • 将下标在区间 [L,R][L,R] 内的数全部加上一个定值kk。

  • 将下标在区间 [L,R][L,R] 内的数加起来并输出。

  • 统计下标在区间 [L,R][L,R] 内的数的极差(最大值与最小值的差)。

数列中的数在开始时全为0。

输入格式

第一行有两个数 N,Q N,Q ,代表数列长度和操作次数

接下来的 QQ 行,每行最开始有一个数 oo

o=1o=1,则接下来有三个数 L,R,kL,R,k,代表一次操作1。

o=2o=2,则接下来有两个数 L,RL,R,代表一次操作2。

o=3o=3,则接下来有两个数 L,RL,R,代表一次操作3。

输出格式

对于每一个操作2或3,你需要输出相应的结果。

样例

样例输入

3 4
1 1 1 10
1 3 3 -10
2 1 3
3 1 3

样例输出

0
20

数据范围与提示

1<N,Q<105 1< N, Q< 10 ^{5}

1LRN 1\leq L\leq R\leq N

0k1050\leq \left | k \right |\leq 10 ^{5}