#include <fstream>
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int n,m,i,j,a[100005],v[400005],p=1,p1,Q,s,S;
int Quest(int q,int x,int y,int st,int dr)
{int mid=(st+dr)/2;
if(x==st&&y==dr)return v[q];
else{if(y<=mid)return Quest(q*2,x,y,st,mid);
if(x>mid)return Quest(q*2+1,x,y,mid+1,dr);
return Quest(q*2,x,mid,st,mid)+Quest(q*2+1,mid+1,y,mid+1,dr);
}
}
void Quest1(int S,int st,int dr,int q)
{int mid=(st+dr)/2;
if(st==dr)Q=st;
else{if(v[q*2]<S)Quest1(S-v[q*2],mid+1,dr,q*2+1);
else Quest1(S,st,mid,q*2);
}
}
int main()
{int x,y,x1,y1;
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>a[i];
while(p<n)p=p*2;
for(i=p;i<=p+n-1;i++)
v[i]=a[i-p+1];
for(i=p-1;i>=1;i--)
v[i]=v[i*2]+v[i*2+1];
for(i=1;i<=m;i++)
{fin>>p1;
if(p1==0){fin>>x>>y;
x1=x+p-1;
while(x1!=0)
{v[x1]=v[x1]+y;
x1=x1/2;
}
}
else if(p1==1){fin>>x>>y;
fout<<Quest(1,x,y,1,p)<<"\n";
}
else if(p1==2){fin>>S;
Quest1(S,1,p,1);
fout<<Q<<"\n";
}
}
}