#include<cstdio>
int n,m,i,j,q,aa,b,a[100100],s1,s2,p,u,mid,s;
FILE *f,*g;
int query(int p) {
int suma = 0;
for (int i = p; i>0; i-=(i&-i)) {
suma += a[i];
}
return suma;
}
void update(int p, int x) {
for (int i = p; i<=n; i+=(i&-i)) {
a[i]+=x;
}
}
int main(){
f=fopen("aib.in","r");
g=fopen("aib.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++){
fscanf(f,"%d",&q);
update(i, q);
}
for(i=1;i<=m;i++){
fscanf(f,"%d",&q);
if(q==0){
fscanf(f,"%d%d",&aa,&b);
update(aa, b);
}
else if(q==1){
fscanf(f,"%d%d",&aa,&b);
fprintf(g,"%d\n",query(b)-query(aa-1));
}
else{
fscanf(f,"%d",&aa);
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
s = query(mid);
if (s >= aa)
u = mid-1;
else
p = mid + 1;
}
s=query(p);
if(s==aa)
fprintf(g,"%d\n",p);
else
fprintf(g,"-1\n");
}
}
fclose(f);
fclose(g);
return 0;
}