#include<fstream>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
#define len 100002
int aib[len];
inline void update(int i,int a)
{
for(;i<len;i+=i&(-i))
aib[i]+=a;
}
inline int query(int i)
{
int sum=0;
for(;i>0;i-=i&(-i))
sum+=aib[i];
return sum;
}
inline int caut(int n,int a)
{
int poz=0,i=1<<17;
for(;i>0;i>>=1)
{
if(i+poz<=n)
{
if(aib[poz+i]<=a)
{
poz+=i;
a-=aib[poz];
if(!a)
return poz;
}
}
}
return -1;
}
int main()
{
ifstream si;
si.open("aib.in");
ofstream so;
so.open("aib.out");
int n,m;
si>>n>>m;
int i,a,b,c;
for(i=0;i<n;++i)
{
si>>a;
update(i+1,a);
}
for(i=0;i<m;++i)
{
si>>a;
if(a==0)
{
si>>b>>c;
update(b,c);
}
else
{
if(a==1)
{
si>>b>>c;
so<<query(c)-query(b-1)<<'\n';
}
else
{
si>>b;
so<<caut(n,b)<<'\n';
}
}
}
si.close();
so.close();
return 0;
}