#include <iostream>
#include <cstdio>
#define N 100005
using namespace std;
int aib[N];
int n,m,x,y,c;
void actualizare(int poz, int val){
for(int i = poz; i<=n; i+=i&(-i))
aib[i]+=val;
}
int caut(int poz){
int rez = 0;
for(int i = poz; i >= 1; i-=i&(-i))
rez+=aib[i];
return rez;
}
int cautBin(int val){
int start = 0;
int baza = 1;
for(baza; baza<=n; baza<<=1);
for(baza;baza;baza>>=1)
if(start+baza<=n && aib[start+baza]<=val){
val -= aib[start+baza];
start+=baza;
if(val==0)
return start;
}
return -1;
}
int main()
{
freopen("aib.in", "r", stdin);
freopen("aib.out", "w", stdout);
scanf("%d%d", &n,&m);
for(int i = 1; i <= n; ++i){
scanf("%d", &x);
actualizare(i,x);
}
for(int i = 0; i < m; ++i){
scanf("%d%d", &c,&x);
if(c<2){
scanf("%d", &y);
if(c==0)
actualizare(x,y);
else
cout<<caut(y)-caut(x-1)<<"\n";
}else
cout<<cautBin(x)<<"\n";
}
return 0;
}