#include <bits/stdc++.h>
#define DIM 1000000
char BUFF[DIM];
FILE*fi;
int k=0;
int citeste(){
int numar=0;
while(BUFF[k]<'0' || BUFF[k]>'9'){
k++;
if(k==DIM){
fread(BUFF,1,DIM,fi);
k=0;
}
}
while(BUFF[k]>='0' && BUFF[k]<='9'){
numar=BUFF[k]+numar*10-'0';
k++;
if(k==DIM){
fread(BUFF,1,DIM,fi);
k=0;
}
}
return numar;
}
int aint[60001];
int sol;
void update(int nod,int val,int st,int dr,int p){
if(st==dr)
aint[p]+=val;
else {
int mij=(st+dr)/2;
if(nod<=mij){
update(nod,val,st,mij,p*2);
}
else {
update(nod,val,mij+1,dr,p*2+1);
}
aint[p]=aint[p*2]+aint[p*2+1];
}
}
int calc(int a,int b,int st,int dr,int p){
if(a<=st && dr<=b)
sol+=aint[p];
else {
int mij=(st+dr)/2,s=0;
if(a<=mij){
calc(a,b,st,mij,p*2);
}
if(b>mij){
calc(a,b,mij+1,dr,p*2+1);
}
}
}
int main()
{
int n,q,i,k,t,a,b;
FILE*fo;
fi=fopen("datorii.in","r");
fo=fopen("datorii.out","w");
n=citeste();
q=citeste();
for(i=1;i<=n;i++){
k=citeste();
update(i,k,1,n,1);
}
for(i=0;i<q;i++){
t=citeste();
if(t==1){
a=citeste();
b=citeste();
sol=0;
calc(a,b,1,n,1);
fprintf(fo,"%d\n",sol);
}
else {
a=citeste();
b=citeste();
b=-b;
update(a,b,1,n,1);
}
}
fclose(fo);
fclose(fi);
return 0;
}