#include<stdio.h>
int aib[100001], n, m;
int bit(int x)
{
return (x&(x-1))^x;
}
void add(int a,int b)
{
int i;
for(i = a; i<=n ; i += bit(i))
{
aib[i] += b;
}
}
int sum(int a,int b)
{
int s1,s2,i;
for(i = b,s1 = 0; i>=1 ; i-=bit(i))
{
s1 += aib[i];
}
for(i = a-1,s2 = 0; i>=1 ; i-=bit(i))
{
s2 += aib[i];
}
return s1-s2;
}
int search(int a)
{
int k,i,s;
for(i=1 ; i<=n ; ++i)
{
s = sum(1,i);
if(s == a)return i;
if(s > a)return -1;
}
return -1;
}
int main()
{
int a,b,tip;
FILE*f = fopen("aib.in","r");
FILE*g = fopen("aib.out","w");
fscanf(f,"%d %d",&n,&m);
for(a = 1; a<=n ; ++a)
{
fscanf(f,"%d",&b);
add(a,b);
}
while(m--)
{
fscanf(f,"%d ",&tip);
if(tip == 0)
{
fscanf(f,"%d %d",&a,&b);
add(a,b);
}
if(tip == 1)
{
fscanf(f,"%d %d",&a,&b);
fprintf(g,"%d\n",sum(a,b));
}
if(tip == 2)
{
fscanf(f,"%d ",&a);
fprintf(g,"%d\n",search(a));
}
}
fclose(f);
fclose(g);
return 0;
}