#include <bits/stdc++.h>
using namespace std;
const int Nmax=1e5+5;
int aib[Nmax];
int v[Nmax];
//g(t)=t&(t-1)
//pt upd: i -> (i|(i-1))+1
int n,a,b;
int pw=1,temp,pos;
int sum(int i){
int s=0;
while(i>0){
s+=aib[i];
i=i&(i-1);
}
return s;
}
int check(int val){
int sm=0;
temp=pw;
pos=0;
while(temp>0){
if(pos+temp<=n&&aib[pos+temp]+sm<val){
pos=pos+temp;
sm+=aib[pos];
}
temp>>=1;
}
if(pos+1>n||v[pos+1]+sm!=val) return -1;
return pos+1;
}
void upd(int i,int val){
while(i<=n){
aib[i]+=val;
i=(i|(i-1))+1;
}
}
int main()
{
ifstream cin("aib.in");
ofstream cout("aib.out");
int m,x,st,dr,mid,s;
cin>>n>>m;
while(pw<n) pw<<=1;
for(int i=1;i<=n;i++){
cin>>v[i];
upd(i,v[i]);
}
for(int i=0;i<m;i++){
cin>>x;
if(x==1){
cin>>a>>b;
cout<<sum(b)-sum(a-1)<<"\n";
}
else if(x==0){
cin>>a>>b;
v[a]+=b;
upd(a,b);
}
else{
cin>>a;
cout<<check(a)<<"\n";
}
}
return 0;
}