1809: 线段树_区间操作

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:56 Solved:21

Description

      计算机程序设计竞赛公布成绩后,总有一个申诉的环节,组委会审核后确认评分有差错,就会去更正该选手的最终成绩。

      下面给定 n名学生竞赛后的成绩序列表你需要使用线段树进行下面两种操作:

         (1) 操作命令 1 : 将区间 [xy] 内每个成绩加上 k。 .

         (2) 操作命令 2 : 求出某区间内成绩的和。 

    只需要输出所有操作命令2的结果。

Input

第一行包含两个整数n,m,分别表示该数列数字的个数和操作的总个数。

第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。

接下来 m 行每行包含 3 或 4 个整数,表示一个操作,具体如下:

    1 x y k:将区间 [x,y] 内每个数加上 k。

    2 x y:   输出区间 [x,y] 内每个数相加的和。




Output

输出包含若干行整数,即为所有操作 2 的结果。

Sample Input Copy

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

Sample Output Copy

11
8
20

HINT

1 < n,m <= 100000