#include <cstdio>
#define MAXN 15000
int T[4*MAXN+10];
int Update(int node, int l, int r, int a, int b, int v){
if(a<=l && r<=b){
T[node]+=v;
return v;
}
else {
int mid=((r-l)>>1)+l, x=0, y=0;
if(a<=mid)
x=Update(node<<1, l, mid, a, b, v);
if(b>mid)
y=Update((node<<1)+1, mid+1, r, a, b, v);
T[node]=T[node]+x+y;
return x+y;
}
}
int Query(int node, int l, int r, int a, int b){
if(a<=l && r<=b)
return T[node];
else {
int mid=((r-l)>>1)+l, x=0, y=0;
if(a<=mid)
x=Query(node<<1, l, mid, a, b);
if(b>mid)
y=Query((node<<1)+1, mid+1, r, a, b);
return x+y;
}
}
int main(){
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int N, M, i, a, b, c;
scanf("%d%d", &N, &M);
for(i=1; i<=N; i++){
scanf("%d", &a);
Update(1, 1, N, i, i, a);
}
for(i=0; i<M; i++){
scanf("%d%d%d", &c, &a, &b);
if(!c)
Update(1, 1, N, a, a, -b);
else
printf("%d\n", Query(1, 1, N, a, b));
}
return 0;
}