#include <cstdio>
using namespace std;
const int MAXN = 100005;
int n,k;
int aib[MAXN];
void adaugare(int val, int poz)
{
while (poz <= n)
{
aib[poz] += val;
poz += poz & -poz;
}
}
int suma(int poz)
{
int rez = 0;
while (poz > 0)
{
rez += aib[poz];
poz -= poz & -poz;
}
return rez;
}
void citire()
{
int nr;
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
scanf("%d%d",&n,&k);
for (int i = 1;i <= n;++i)
{
scanf("%d",&nr);
adaugare(nr,i);
}
}
int cautbinar(int nr)
{
int poz = 0;
for (int pas = 1 << 17;pas >= 1;pas >>= 1)
if(poz + pas <= n && aib[poz + pas] < nr)
{// ^
nr -= aib[poz + pas];// |
poz += pas;// |
}// |
return poz + 1;// +1 deoarece e strict
}
int main()
{
int tip,a,b;
int poz;
citire();
for (int i = 1;i <= k;++i)
{
scanf("%d",&tip);
if (tip == 0)
{
scanf("%d%d",&a,&b);
adaugare(b,a);
}
else if (tip == 1)
{
scanf("%d%d",&a,&b);
printf("%d\n",suma(b) - suma(a - 1));
}
else
{
scanf("%d",&a);
poz = cautbinar(a);
printf("%d\n",(suma(poz) == a)?poz:-1) ;
}
}
return 0;
}