#include <iostream>
#include <cstdio>
#define N 15005
using namespace std;
int m,n,c,a,b;
unsigned int v[N], arbint[4*N];
void construieste(int st=1, int dr=n, int pos=1){
if(st==dr){
arbint[pos]=v[st];
return ;
}
int mij = (st+dr)/2;
construieste(st,mij,2*pos);
construieste(mij+1,dr,2*pos+1);
arbint[pos]=arbint[2*pos]+arbint[2*pos+1];
}
void update(int k, int st = 1, int dr = n, int pos=1){
if(dr==st){
arbint[pos]=v[k];
return ;
}
int mij = (st+dr)/2;
if(k<=mij)
update(k,st,mij,2*pos);
else
update(k,mij+1,dr,2*pos+1);
arbint[pos]=arbint[2*pos]+arbint[2*pos+1];
}
int datorii(int qst, int qdr, int st = 1, int dr = n, int pos = 1){
if(qst<=st && dr<=qdr)
return arbint[pos];
int mij = (st+dr)/2;
if(qdr<=mij)
return datorii(qst,qdr,st,mij,2*pos);
if(mij<qst)
return datorii(qst,qdr,mij+1,dr,2*pos+1);
return datorii(qst,qdr,st,mij,2*pos)+
datorii(qst,qdr,mij+1,dr,2*pos+1);
}
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]);
construieste();
for(int i=0;i<m;++i){
scanf("%d%d%d", &c, &a, &b);
if(c==0){
v[a]-=b;
update(a);
}else
cout<<datorii(a,b)<<"\n";
}
return 0;
}