#include<stdio.h>
#include<fstream.h>
int a[80000],n,m,i,sum;
void update(int nod,int l,int r,int poz,int val)
{
if(l==r)
a[nod]-=val;
else {
int mij=(l+r)/2;
if(mij>=poz)
update(2*nod,l,mij,poz,val);
if(mij<poz)
update(2*nod+1,mij+1,r,poz,val);
a[nod]=a[2*nod]+a[2*nod+1];
}
}
void query(int nod,int l, int r,int st,int fin)
{ if(fin>=r&&st<=l)
sum+=a[nod];
else{ int mij=(l+r)/2;
if(st<=mij)
query(2*nod,l,mij,st,fin);
if(mij<fin)
query(2*nod+1,mij+1,r,st,fin);
}
}
int main()
{ ifstream f("datorii.in");
ofstream g("datorii.out");
f>>n>>m;
for(i=1;i<=n;i++)
{ int x;
f>>x;
update(1,1,n,i,-x);
}
for(i=1;i<=m;i++)
{ sum=0;
int q,w,e;
f>>q>>w>>e;
if(q==0)
update(1,1,n,w,e);
if(q==1)
{ query(1,1,n,w,e);
g<<sum<<"\n";
}
}
return 0;}