#include<stdio.h>
FILE *f = fopen("datorii.in","r");
FILE *g = fopen("datorii.out","w");
#define MaxN 15100
#define mij ((li+ls)>>1)
#define fs (poz<<1)
#define fd ((poz<<1)+1)
int N,M;
int A[MaxN],AINT[4*MaxN];
void citire(void)
{
fscanf(f,"%d %d",&N,&M);
for(int i=1;i<=N;i++)
fscanf(f,"%d ",&A[i]);
}
inline void build(int li,int ls,int poz)
{
if(li == ls)
{
AINT[poz] = A[li];
return ;
}
build(li,mij,fs);
build(mij+1,ls,fd);
AINT[poz] = AINT[fs]+AINT[fd];
}
inline void insert(int li,int ls,int poz,int pozVal,int val)
{
if(li == ls)
{
AINT[poz] -= val;
return ;
}
if(li <= pozVal && pozVal <= mij)
insert(li,mij,fs,pozVal,val);
else
insert(mij+1,ls,fd,pozVal,val);
AINT[poz] = AINT[fs]+AINT[fd];
}
inline int querry(int li,int ls,int poz,int a,int b)
{
if(a <= li && ls <= b)
return AINT[poz];
int sum = 0;
if(a <= mij)
sum += querry(li,mij,fs,a,b);
if(b > mij)
sum += querry(mij+1,ls,fd,a,b);
return sum;
}
int main()
{
int op,a,b;
citire();
build(1,N,1);
for(int i=1;i<=M;i++)
{
fscanf(f,"%d %d %d\n",&op,&a,&b);
switch(op)
{
case 0 : insert(1,N,1,a,b);
break;
default : fprintf(g,"%d\n",querry(1,N,1,a,b));
}
}
}