#include<fstream>
#include<algorithm>
using namespace std;
int i,j,n,m,k,st,dr,tip,poz,x,a[100010];
unsigned long long c[100010],rez,s1,s2,sum;
inline void aduna(int poz,int sum)
{
while(poz<=n)
{
c[poz]+=sum;
poz+=(poz&-poz);
}
}
inline int rezolva(int st,int dr)
{
s1=0,s2=0;
while(dr!=0)
{
s1+=c[dr];
dr-=(dr&-dr);
}
while(st!=0)
{
s2+=c[st];
st-=(st&-st);
}
return s1-s2;
}
inline int pozitie(int sum)
{
int i;
for(i=1;i<=n;++i)
if(rezolva(0,i)==sum)
return i;
return -1;
}
int main()
{
FILE *f=fopen("aib.in","r");
FILE *g=fopen("aib.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;++i)
{
fscanf(f,"%d",&a[i]);
a[i]+=a[i-1];
c[i]=a[i]-a[i-(i&-i)];
}
for(i=1;i<=m;++i)
{
fscanf(f,"%d",&tip);
if(tip==0)
{
fscanf(f,"%d%d",&poz,&sum);
aduna(poz,sum);
}
else
if(tip==1)
{
fscanf(f,"%d%d",&st,&dr);
fprintf(g,"%d\n",rezolva(st-1,dr));
}
else
if(tip==2)
{
fscanf(f,"%d",&sum);
fprintf(g,"%d\n",pozitie(sum));
}
}
return 0;
}