#include<fstream>
using namespace std;
ifstream f("datorii.in"); ofstream g("datorii.out");
int arb[45000];
void update(int nod, int st, int dr, int poz, int val)
{ if(st==dr) arb[nod]+=val;
else
{ int m=(st+dr)/2;
if(poz<=m) update(nod*2,st,m,poz,val); else update(nod*2+1,m+1,dr,poz,val);
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
}
void querry(int nod, int st, int dr, int a, int b, int &sol)
{ if(a<=st && dr<=b) sol+=arb[nod];
else
{ int m=(st+dr)/2;
if(a<=m) querry(nod*2,st,m,a,b,sol);
if(m<b) querry(nod*2+1,m+1,dr,a,b,sol);
}
}
int main()
{ int n,nr;
f>>n>>nr;
for(int x,i=1;i<=n;++i){f>>x; update(1,1,n,i,x);}
for(int t,poz,val,a,b,sol,i=1;i<=nr;++i)
{ f>>t;
if(t) {f>>a>>b; sol=0; querry(1,1,n,a,b,sol); g<<sol<<'\n';}
else {f>>poz>>val; update(1,1,n,poz,-val);}
}
g.close(); return 0;
}