#include<cstdio>
using namespace std;
FILE*in=fopen("datorii.in","r");
FILE*out=fopen("datorii.out","w");
const int NMAX=15007;
int n,m,i,po=1,x,c,a,b;
int v[4*NMAX],w[NMAX];
void update(int poz,int val,int nod, int nodst, int noddr)
{
int mij=(nodst+noddr)/2;
if(nodst==noddr)
{
v[nod]=val;
return;
}
if(poz<=mij)
{
update(poz,val,2*nod,nodst,mij);
}
else if(mij+1<=poz)
{
update(poz,val,2*nod+1,mij+1,noddr);
}
v[nod]=v[2*nod]+v[2*nod+1];
}
int qer(int st,int dr,int nod,int nodst,int noddr)
{
if(nodst==st&&noddr==dr)
{
return v[nod];
}
int mij=(nodst+noddr)/2;
if(dr<=mij)
{
return qer(st,dr,2*nod,nodst,mij);
}
if(mij+1<=st)
{
return qer(st,dr,2*nod+1,mij+1,noddr);
}
return qer(st,mij,2*nod,nodst,mij)+qer(mij+1,dr,2*nod+1,mij+1,noddr);
}
int main()
{
fscanf(in,"%d%d",&n,&m);
while(po<n)
{
po*=2;
}
for(i=1;i<=n;i++)
{
fscanf(in,"%d",&x);
w[i]=x;
update(i,x,1,1,po);
}
for(i=1;i<=m;i++)
{
fscanf(in,"%d%d%d",&c,&a,&b);
if(c==0)
{
update(a,w[a]-b,1,1,po);
}
else
{
fprintf(out,"%d\n",qer(a,b,1,1,po));
}
}
}