#include <cstdio>
const char iname[] = "datorii.in";
const char oname[] = "datorii.out";
const int maxN = 15005;
int n, m, T[4*maxN + 100];
void pay();
int getDatorii();
void read();
void solve();
int main()
{
freopen(iname, "r", stdin);
freopen(oname, "w", stdout);
read();
solve();
return 0;
}
void pay(int data, int s, int f, int zi, int val){
if(s == f){
if(T[data] == 0)T[data]= val;
else T[data] -= val;
}
else{
int mij = (s + f) / 2;
if(zi <= mij) pay(2*data, s, mij, zi, val);
else pay(2*data+1, mij+1, f, zi, val);
T[data] = T[2*data] + T[2*data +1];
}
}
int getDatorii(int zi, int s, int f, int i, int sf){
if(i <= s && f <= sf) return T[zi];
else{
int mij = (s + f) / 2, left = 0, right = 0;
if(i <= mij) left = getDatorii(2*zi, s, mij, i,sf);
if(mij < sf) right = getDatorii(2*zi+1, mij+1, f, i, sf);
return left+right;
}
}
void read(){
scanf("%d %d\n", &n, &m);
int readin;
for(int i = 1; i <= n; ++i){
scanf("%d", &readin);
pay(1,1,n,i,readin);
}
}
void solve(){
for(int i = 0; i < m; ++i){
int c, x, y;
scanf("%d %d %d", &c, &x, &y);
if(c == 0) pay(1,1,n,x,y);
else printf("%d\n",getDatorii(1, 1, n, x, y));
}
}