#include <stdio.h>
int aib[100001];
int lastbit(int x){
return x&(-x);
}
int capat(int x){
return x-lastbit(x)+1;
}
int sum(int n){
int s;
s=0;
while(n>0){
s=s+aib[n];
n=capat(n)-1;
}
return s;
}
void add(int pos,int val,int n){\
int i;
i=pos;
while(i<=n){
aib[i]=aib[i]+val;
i=i+lastbit(i);
}
}
int search(int a,int n){
int st,dr,s,m;
st=1;
dr=n;
while(st<=dr){
m=(st+dr)/2;
s=sum(m);
if(a<=s)
dr=m-1;
else
st=m+1;
}
if(sum(st)==a)
return st;
else
return -1;
}
int main(){
int n,m,x,i,f,a,b;
FILE *fin=fopen("aib.in","r");
FILE *fout=fopen("aib.out","w");
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++){
fscanf(fin,"%d",&x);
add(i,x,n);
}
for(i=0;i<m;i++){
fscanf(fin,"%d",&f);
if(f==0){
fscanf(fin,"%d%d",&a,&b);
add(a,b,n);
}else if(f==1){
fscanf(fin,"%d%d",&a,&b);
fprintf(fout,"%d\n",sum(b)-sum(a-1));
}else{
fscanf(fin,"%d",&a);
fprintf(fout,"%d\n",search(a,n));
}
}
fclose(fin);
fclose(fout);
return 0;
}