#include<stdio.h>
#define Nmax 15005
FILE *fin=fopen("datorii.in","r"),
*fout=fopen("datorii.out","w");
int N,K,a[Nmax],M[4*Nmax],ok;
void generare(int nod,int b,int e){
if(b==e){
M[nod]=a[e];
}
else{
generare(2*nod,b,(b+e)/2);
generare(2*nod+1,(b+e)/2+1,e);
M[nod]=M[2*nod]+M[2*nod+1];
}
}
void modificare(int nod,int b,int e, int poz,int nr){
if(poz>e || poz<b)
return;
if(b==e&&b==poz)
M[nod]-=nr,ok=1;
else{
modificare(2*nod,b,(b+e)/2,poz,nr);
if(ok==1){
M[nod]-=nr;
return;
}
modificare(2*nod+1,(b+e)/2+1,e,poz,nr);
M[nod]-=nr;
}
}
int rezolvare(int nod,int b,int e,int i,int j){
if(i>e || j<b)
return -1;
if(i<=b && j>=e)
return M[nod];
int p1=rezolvare(2*nod,b,(b+e)/2,i,j);
int p2=rezolvare(2*nod+1,(b+e)/2+1,e,i,j);
if(p2==-1)
return p1;
if(p1==-1)
return p2;
return p1+p2;
}
int main(){
fscanf(fin,"%d %d",&N,&K);
for(int i=1;i<=N;i++)
fscanf(fin,"%d",&a[i]);
generare(1,1,N);
/*
modificare(1,1,N,3,1);
for(int i=1;i<=12;i++)
fprintf(fout,"%d ",M[i]);
*/
for(int k=1;k<=K;k++){
int c,i,j;
fscanf(fin,"%d%d%d",&c,&i,&j);
ok=0;
if(c==0)
modificare(1,1,N,i,j);
else
fprintf(fout,"%d\n",rezolvare(1,1,N,i,j));
}
fclose(fin);
fclose(fout);
return 0;
}