#SGM0000001. Truy vấn tổng đoạn động (Dynamic Range Sum Queries)

Truy vấn tổng đoạn động (Dynamic Range Sum Queries)

Truy vấn tổng đoạn động (Dynamic Range Sum Queries)

Nguồn: CSES

Phiên bản: Phước Hưng OJ Extended

Đề bài

Cho một mảng gồm nn số nguyên. Có qq thao tác. Mỗi thao tác hoặc gán một giá trị mới cho một vị trí, hoặc yêu cầu tính tổng các phần tử trên một đoạn liên tiếp của mảng.

Input

  • Dòng đầu chứa hai số nguyên nn và qq.
  • Dòng thứ hai chứa nn số nguyên x1,x2,…,xnx_1,x_2,\ldots,x_n.
  • Mỗi trong qq dòng tiếp theo có dạng 1 k u để gán xk=ux_k=u, hoặc 2 a b để hỏi tổng xa+xa+1+⋯+xbx_a+x_{a+1}+\cdots+x_b.

Output

Với mỗi thao tác loại 2, in tổng của đoạn được yêu cầu trên một dòng.

Subtask

  • Subtask 1 — 20%: 1≤n,q≤10001 \le n,q \le 1000, 1≤xi,u≤1061 \le x_i,u \le 10^6.
  • Subtask 2 — 30%: 1≤n,q≤500001 \le n,q \le 50000, 1≤xi,u≤1091 \le x_i,u \le 10^9.
  • Subtask 3 — 50%: 1≤n,q≤2⋅1051 \le n,q \le 2\cdot10^5, 1≤xi,u≤1091 \le x_i,u \le 10^9.

Ví dụ

Input

8 4
3 2 4 5 1 1 5 3
2 1 4
2 5 6
1 3 1
2 1 4

Output

14
2
11

Giải thích

Ban đầu, tổng đoạn [1,4][1,4] là 3+2+4+5=143+2+4+5=14 và tổng đoạn [5,6][5,6] là 1+1=21+1=2. Sau thao tác 1 3 1, phần tử thứ ba đổi từ 44 thành 11, nên tổng mới của đoạn [1,4][1,4] là 3+2+1+5=113+2+1+5=11.