#include<cstdio>
#define NMAX 300000
int poz,val,v[NMAX],i,j,n,m,s,a,b,pos,op,M;
void update(int nod,int st, int dr)
{
if(st==dr)
{
v[nod]=val;
return;
}
m=(st+dr)/2;
if(pos<=m)
update(nod*2,st,m);
else
update(nod*2+1,m+1,dr);
v[nod]=v[nod*2+1]+v[nod*2];
}
void query(int nod,int st,int dr)
{
int mij;
if ((a<=st) && (dr<=b))
{
s=s+v[nod];
return;}
mij=(st+dr)/2;
if (a<=mij)
query(2*nod,st,mij);
if (mij<b)
query(2*nod+1,mij+1,dr);
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&M);
for(i=1;i<=n;i++)
{
scanf("%d",&val);
pos=i;
update(1,1,n);
}
for(i=1;i<=M;i++)
{
scanf("%d%d%d",&op,&a,&b);
if(!op)
{
pos=a;
val=-b;
update(1,1,n);
}
else
{
s=0;
query(1,1,n);
printf("%d\n",s);
}
}
return 0;
}