#include<stdio.h>
#include<string.h>
int ai[30000],val,poz,start,finish,suma;
void update(int nod,int st,int dr)
{
int div;
if(st==dr)
{
ai[nod]+=val;
return ;
}
div=(st+dr)/2;
if(poz<=div)
update(2*nod,st,div);
else
update(2*nod+1,div+1,dr);
ai[nod]=ai[2*nod]+ai[2*nod+1];
}
void query(int nod,int st,int dr)
{
int div;
if(start<=st && dr<=finish)
suma+=ai[nod];
div=(st+dr)/2;
if(start<=div)
query(2*nod,st,div);
if(finish>div)
query(2*nod+1,div+1,dr);
}
int main()
{
int n,m,i,nr,cod,t1,t2;
FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
memset(ai,0,30000*sizeof(int));
fscanf(f,"%i%i\n",&n,&m);
for(i=0;i<n;i++)
{
fscanf(f,"%i",&nr);
val=nr;
update(0,0,n-1);
}
for(i=0;i<m;i++)
{
fscanf(f,"%i%i%i\n",&cod,&t1,&t2);
if(cod==0)
{
poz=t1-1;
val=-t2;
update(0,0,n-1);
}
else
{
start=t1-1;
finish=t2-1;
suma=0;
query(0,0,n-1);
fprintf(g,"%i\n",suma);
}
}
fclose(f);
fclose(g);
return 0;
}