#include <bits/stdc++.h>
using namespace std;
int n, m;
int tree[15001 * 4 + 66];
int val, pos;
void update(int node, int l, int r) {
if (l == r) {
tree[node] += val;
return ;
}
int m = (l + r) / 2;
if (pos <= m) {
update(node * 2, l, m);
} else {
update(node * 2 + 1, m + 1, r);
}
tree[node] = tree[node * 2] + tree[node * 2 + 1];
}
int tl, tr, s;
void query(int node, int l, int r) {
if (tl <= l && r <= tr) {
s += tree[node];
return ;
}
int m = (l + r) / 2;
if (tl <= m) {
query(node * 2, l, m);
}
if (tr > m) {
query(node * 2 + 1, m + 1, r);
}
}
int main() {
freopen("carici.in", "r", stdin);
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d%d", &n, &m);
for (int i = 1, x; i <= n; i++) {
scanf("%d", &x);
val = x;
pos = i;
update(1, 1, n);
}
for (int i = 1, t, x, y; i <= m; i++) {
scanf("%d%d%d", &t, &x, &y);
if (t == 0) {
pos = x;
val = -y;
update(1, 1, n);
} else {
tl = x;
tr = y;
s = 0;
query(1, 1, n);
cout << s << "\n";
}
}
return 0;
}