#include <cstdio>
#define N 15001
using namespace std;
int H[3 * N], v[N], n, m;
void build(int node, int L, int R){
int M = (L + R) / 2;
if(L == R)
H[node] = v[L];
else{
build(node * 2, L, M);
build(node * 2 + 1, M + 1, R);
H[node] = H[node * 2] + H[node * 2 + 1];
}
}
void update(int node, int L, int R, int pos, int val){
int M = (L + R) / 2;
if(L == R)
H[node] -= val;
else{
if(pos <= M)
update(node * 2, L, M, pos, val);
else
update(node * 2 + 1, M + 1, R, pos, val);
H[node] = H[node * 2] + H[node * 2 + 1];
}
}
int query(int node, int L, int R, int ql, int qr){
if(ql <= L && qr >= R)
return H[node];
int M = (L + R) / 2, result = 0;
if(ql <= M)
result += query(node * 2, L, M, ql, qr);
if(qr > M)
result += query(node * 2 + 1, M + 1, R, ql, qr);
return result;
}
int main(){
freopen("datorii.in", "r", stdin);
//freopen("datorii.out", "w", stdout);
scanf("%d %d ", &n, &m);
for(int i = 1; i <= n; ++i)
scanf("%d ", &v[i]);
build(1, 1, n);
for(int i = 1; i <= m; ++i){
int ok, x, y;
scanf("%d %d %d", &ok, &x, &y);
if(!ok)
update(1, 1, n, x, y);
else
printf("%d\n", query(1, 1, n, x, y));
}
}