/*
De bai:
Cho mảng A có N số và Q truy vấn:
Có hai loại truy vấn:
1 pos val: chỉnh a[pos] += val
2 l r: Tính tổng từ l đến r
*/
#include <bits/stdc++.h>
#define endl '\n'
typedef long long ll;
using namespace std;
const ll MAXN = 1e5;
ll f[MAXN], n, q;
void update(ll pos, ll val) { // Cap nhat vi tri pos len val don vi
for (ll i = pos; i <= n; i += i & -i) f[i] += val;
// Em khong can hieu i & -i la gi dau, chi can hoc thuoc
}
ll get(ll pos) { // Ham get nay se tra ve tong tu 1 den pos
ll res = 0;
for (ll i = pos; i; i -= i & -i) res += f[i];
return res;
/*
Vi du em muon tinh tong tu l den r thi giong prefix sum: get(r) - get(l - 1)
*/
}
void sol() {
cin >> n >> q;
for (ll i = 1; i <= n; i++) {
ll x; cin >> x;
update(i, x);
}
for (ll i = 1; i <= q; i++) {
ll t, u, v; cin >> t >> u >> v;
if (t == 1) update(u, v);
else cout << get(v) - get(u - 1) << endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
// freopen(".INP", "r", stdin);
// freopen(".OUT", "w", stdout);
sol();
return 0;
}
LyoKRGUgYmFpOgpDaG8gbeG6o25nIEEgY8OzIE4gc+G7kSB2w6AgUSB0cnV5IHbhuqVuOgoKQ8OzIGhhaSBsb+G6oWkgdHJ1eSB24bqlbjoKMSBwb3MgdmFsOiBjaOG7iW5oIGFbcG9zXSArPSB2YWwKMiBsIHI6IFTDrW5oIHThu5VuZyB04burIGwgxJHhur9uIHIKKi8KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIGVuZGwgJ1xuJwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxsIE1BWE4gPSAxZTU7CmxsIGZbTUFYTl0sIG4sIHE7Cgp2b2lkIHVwZGF0ZShsbCBwb3MsIGxsIHZhbCkgeyAvLyBDYXAgbmhhdCB2aSB0cmkgcG9zIGxlbiB2YWwgZG9uIHZpCiAgICBmb3IgKGxsIGkgPSBwb3M7IGkgPD0gbjsgaSArPSBpICYgLWkpIGZbaV0gKz0gdmFsOwogICAgLy8gRW0ga2hvbmcgY2FuIGhpZXUgaSAmIC1pIGxhIGdpIGRhdSwgY2hpIGNhbiBob2MgdGh1b2MKfQoKbGwgZ2V0KGxsIHBvcykgeyAvLyBIYW0gZ2V0IG5heSBzZSB0cmEgdmUgdG9uZyB0dSAxIGRlbiBwb3MKICAgIGxsIHJlcyA9IDA7CiAgICBmb3IgKGxsIGkgPSBwb3M7IGk7IGkgLT0gaSAmIC1pKSByZXMgKz0gZltpXTsKICAgIHJldHVybiByZXM7CiAgICAvKgogICAgVmkgZHUgZW0gbXVvbiB0aW5oIHRvbmcgdHUgbCBkZW4gciB0aGkgZ2lvbmcgcHJlZml4IHN1bTogZ2V0KHIpIC0gZ2V0KGwgLSAxKQogICAgKi8KfQoKdm9pZCBzb2woKSB7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgZm9yIChsbCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBsbCB4OyBjaW4gPj4geDsKICAgICAgICB1cGRhdGUoaSwgeCk7CiAgICB9CiAgICBmb3IgKGxsIGkgPSAxOyBpIDw9IHE7IGkrKykgewogICAgICAgIGxsIHQsIHUsIHY7IGNpbiA+PiB0ID4+IHUgPj4gdjsKICAgICAgICBpZiAodCA9PSAxKSB1cGRhdGUodSwgdik7CiAgICAgICAgZWxzZSBjb3V0IDw8IGdldCh2KSAtIGdldCh1IC0gMSkgPDwgZW5kbDsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgovLyAgICBmcmVvcGVuKCIuSU5QIiwgInIiLCBzdGRpbik7Ci8vICAgIGZyZW9wZW4oIi5PVVQiLCAidyIsIHN0ZG91dCk7CgogICAgc29sKCk7CgogICAgcmV0dXJuIDA7Cn0K