#include<stdio.h>
#define nmax 15000
#define max(a,b) ((a)>(b)?(a):(b))
long val,a[nmax],pos,sol;
void query(int nod,int left,int right,int aux2,int aux3)
{
if( aux2<=left && aux3>=right){
sol+=a[nod];
}
else
{
int mij=(left+right)/2;
if( aux2<=mij) query(nod*2,left,mij,aux2,aux3);
if(aux3>mij) query(nod*2+1,mij+1,right,aux2,aux3);
}
}
void update(int nod,int left,int right)
{
if( left == right)
a[nod]+=val;
else
{
int mij=(left+right)/2;
if( pos<=mij) update(nod*2,left,mij);
if( pos> mij) update(nod*2+1,mij+1,right);
a[nod]=a[nod*2]+a[nod*2+1];
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int n,m,i;
scanf("%d%d",&n,&m);
for(i=1; i<=n; ++i){
scanf("%d",&val);
pos=i;
update(1,1,n);
}
int aux1,aux2,aux3;
for(i=1; i<=m; ++i){
scanf("%d%d%d",&aux1,&aux2,&aux3);
if(!aux1)
{
pos=aux2;
val=-aux3;
update(1,1,n); }
else
{
sol=0;
query(1,1,n,aux2,aux3);
printf("%d\n",sol);
}
}
// */
return 0;
}