#include <stdio.h>
#include <stdlib.h>
#define zeros(x) ((x^(x-1))&x)
#define MAXN 100001
int aib[MAXN],n;
inline void add(int x,int nr){
int i;
for(i=x;i<=n;i=i+zeros(i))
aib[i]+=nr;
}
inline int sum(int x){
int i,s=0;
for(i=x;i>0;i=i-zeros(i))
s=s+aib[i];
return s;
}
int main(){
FILE*fi,*fout;
int i,j,st,m,dr,mij,t,a,b,nr;
fi=fopen("aib.in" ,"r");
fout=fopen("aib.out" ,"w");
fscanf(fi,"%d%d" ,&n,&m);
for(i=1;i<=n;i++){
fscanf(fi,"%d" ,&nr);
add(i,nr);
}
for(i=0;i<m;i++){
fscanf(fi,"%d" ,&t);
if(t==0){
fscanf(fi,"%d%d" ,&a,&b);
add(a,b);
}
if(t==1){
fscanf(fi,"%d%d" ,&a,&b);
fprintf(fout,"%d\n" ,sum(b)-sum(a-1));
}
if(t==2){
fscanf(fi,"%d" ,&a);
st=1;
dr=n+1;
while(dr-st>1){
mij=(st+dr)/2;
if(sum(mij)>a)
dr=mij;
else
st=mij;
}
fprintf(fout,"%d\n" ,st);
}
}
fclose(fi);
fclose(fout);
return 0;
}