#SDNU1667. 区间查询+区间修改Ⅰ

区间查询+区间修改Ⅰ

Description

给出 n 个整数a[1],a[2],...,a[n] .

q 次操作,共有两种操作:

11 ll rr 查询 i=lra[i]{\textstyle \sum_{i=l}^{r}}a[i].

22 ll rr ww a[i]a[i]+wa[i]\longleftarrow a[i]+w (lir)(l\le i\le r)

Format

Input

第一行有两个正整数 nn qqnn 表示数组长度, qq 表示操作次数.

第二行有 nn 个整数 a[1],a[2],...,a[n]a[1],a[2],...,a[n].

接下来 qq 行,每行第一个数是 opop 表示操作类型

op=1op=1 再输入 l,rl,r 表示查询 i=lra[i]{\textstyle \sum_{i=l}^{r}}a[i].

op=2op = 2 再输入 l,r,wl,r,w 表示令 a[i]a[i]+wa[i]\longleftarrow a[i]+w (lir)(l\le i\le r).

op{1,2}op\in \left \{1, 2 \right \} 1n,a[i],q,w1051\le n,a[i],q,w\le 10^{5} 1lrn1\le l\le r\le n

Output

对于每次查询操作输出一个整数表示 i=lra[i]{\textstyle \sum_{i=l}^{r}}a[i].

Samples

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