#include<stdio.h>
#define dim 15001
unsigned long v[dim*3],aux[dim],n,m,sum;
void add(unsigned long nod, unsigned long st, unsigned long dr)
{if(st==dr) v[nod]=aux[st];
else
{unsigned long jum=(st+dr)/2;
add(nod*2,st,jum);
add(nod*2+1,jum+1,dr);
v[nod]=v[nod*2]+v[nod*2+1];
}
}
void update(unsigned long nod, unsigned long st, unsigned long dr, unsigned long poz, unsigned long val)
{if(st==dr) v[nod]-=val;
else
{unsigned long jum=(st+dr)/2;
if(poz<=jum) update(nod*2,st,jum,poz,val);
else update(nod*2+1,jum+1,dr,poz,val);
v[nod]=v[nod*2]+v[nod*2+1];
}
}
void query(unsigned long nod, unsigned long st, unsigned long dr, unsigned long a, unsigned long b)
{if((a<=st)&&(dr<=b)) sum+=v[nod];
else
{unsigned long jum=(st+dr)/2;
if(a<=jum) query(nod*2,st,jum,a,b);
if(b>jum) query(nod*2+1,jum+1,dr,a,b);
v[nod]=v[nod*2]+v[nod*2+1];
}
}
int main()
{
unsigned long i,k,x,y;
freopen("datorii.in","rt",stdin);
freopen("datorii.out","wt",stdout);
scanf("%ld %ld",&n,&m);
for(i=1;i<=n;i++)
scanf("%ld",&aux[i]);
add(1,1,n);
for(i=1;i<=m;i++)
{scanf("%ld %ld %ld",&k,&x,&y);
if(!k)
{update(1,1,n,x,y);
}
else {sum=0;
query(1,1,n,x,y);
printf("%ld\n",sum);
}
}
return 0;
}