#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
char buff[4096];
int pbuf=4095;
void readbuff(){
pbuf=0;
fin.read(buff,4095);
}
int citire(){
int nr=0;
if(pbuf==4095){
readbuff();
}
while(buff[pbuf]<'0'||buff[pbuf]>'9'){
pbuf++;
if(pbuf==4095){
readbuff();
}
}
while(buff[pbuf]>='0'&&buff[pbuf]<='9'){
nr=nr*10+buff[pbuf]-'0';
pbuf++;
if(pbuf==4095){
readbuff();
}
}
return nr;
}
int v[15005],aint[100005];
void update(int nod,int st,int dr,int val,int poz){
if(st==dr){
aint[nod]+=val;return;
}
int mij=(st+dr)/2;
if(poz<=mij){
update(2*nod,st,mij,val,poz);
}
else if(mij<poz){
update(2*nod+1,mij+1,dr,val,poz);
}
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
int sum=0;
void query(int nod,int st,int dr,int a,int b){
if(a<=st&&dr<=b){
sum+=aint[nod];return;
}
int mij=(st+dr)/2;
if(a<=mij){
query(2*nod,st,mij,a,b);
}
if(mij<b){
query(2*nod+1,mij+1,dr,a,b);
}
}
int main()
{
int n,m,op,a,b;n=citire();m=citire();
for(int i=1;i<=n;i++){
v[i]=citire();
update(1,1,n,v[i],i);
}
for(int i=1;i<=m;i++){
op=citire();
if(op==0){
a=citire();b=citire();
update(1,1,n,-b,a);
}
else if(op==1){
a=citire();b=citire();
sum=0;query(1,1,n,a,b);fout<<sum<<'\n';
}
}
return 0;
}