#include <cstdio>
#define MAX_N 100000
using namespace std;
FILE *f, *g;
void add(int i, int nr);
int n, m;
int aib[MAX_N + 1];
int pasul;
void readFile()
{
f = fopen("aib.in", "r");
fscanf(f, "%d%d", &n, &m);
pasul = 1;
while(pasul < n)
pasul <<= 1;
int i;
int nr;
for(i = 1; i <= n; i ++)
{
fscanf(f, "%d", &nr);
add(i, nr);
}
}
void add(int i, int nr)
{
while(i <= n)
{
aib[i] += nr;
i += i & (-i);
}
}
int suma(int a)
{
int rez = 0;
while(a > 0)
{
rez += aib[a];
a = a & (a - 1);
}
return rez;
}
int cautBin(int a)
{
if(a == 0)
{
if(aib[1] > 0)
return -1;
return 1;
}
int pas = pasul;
int i = 0;
while(pas != 0 && a > 0)
{
if(i + pas <= n && aib[i + pas] < a)
{
a -= aib[i + pas];
i += pas;
}
pas >>= 1;
}
if(suma(i + 1) != a)
return -1;
return i + 1;
}
void ansQues()
{
g = fopen("aib.out", "w");
int type;
int a, b;
while(m > 0)
{
m --;
fscanf(f, "%d", &type);
if(type < 2)
{
fscanf(f, "%d%d", &a, &b);
if(type == 0)
add(a, b);
else
fprintf(g, "%d\n", suma(b) - suma(a - 1));
}
else
{
fscanf(f, "%d", &a);
fprintf(g, "%d\n", cautBin(a));
}
}
fclose(g);
}
int main()
{
readFile();
ansQues();
return 0;
}