#include <fstream>
using namespace std;
int n,m,i,x,a,b,c,st,dr,mi,aib[100010];
int getsum(int p)
{
int s=0;
for(;p;p-=p&(-p))
s+=aib[p];
return s;
}
void upd(int p,int d)
{
for(;p<=n;p+=p&(-p))
aib[p]+=d;
}
int main()
{
ifstream cin("aib.in");
ofstream cout("aib.out");
cin>>n>>m;
for(i=1;i<=n;i++)
{
cin>>x;
upd(i,x);
}
while (m--){
cin>>c;
if(!c)
{
cin>>a>>b;
upd(a,b);
continue;
}
if(c==1)
{
cin>>a>>b;
cout<<getsum(b)-getsum(a-1)<<'\n';
continue;
}
cin>>a;
if(getsum(n)<a) { cout<<-1<<'\n'; continue; }
st=0; dr=n;
while(dr!=st+1)
{
mi=(dr+st)/2;
if(getsum(mi)<a)
st=mi;
else
dr=mi;
}
if(getsum(dr)==a)
cout<<dr<<'\n';
else
cout<<-1<<'\n';
}
}