#include <bits/stdc++.h>
#define NMAX 100500
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int t[NMAX],n;
void update(int val, int i)
{
for(;i<=n;i+=i&(-i))
t[i]+=val;
}
int get(int x)
{
int sum=0;
for(;x>0;x-=x&(-x))
sum+=t[x];
return sum;
}
int caut(int a)
{
int sz=1, st=0,mij;
while(sz*2<n)
sz*=2;
while(a!=0 && sz>=1)
{
mij=(st+sz);
if(t[mij]>a)
{
sz=sz/2;
}
if(t[mij]<a)
{
st+=sz;
a=a-t[mij];
}
if(t[mij]==a)
return mij;
}
return -1;
}
int m , v[NMAX], c, a, b;
int main()
{
// 25 42 8 15 1 55 16 67
// 25 67 8 90 1 56 16 229
fin>>n>>m;
for(int i=1;i<=n;++i)
fin>>v[i];
for(int i=1;i<=n;++i)
update(v[i],i);
for(int i=1;i<=n;++i)
cout<<t[i]<<" ";
for(int i=1;i<=m;++i)
{
fin>>c;
if(c==2)
{
fin>>a;
fout<<caut(a)<<'\n';
}
fin>>a>>b;
if(c==0)
update(b, a);
if(c==1)
{
int ans=get(b)-get(a-1);
fout<<ans<<'\n';
}
}
return 0;
}