#include <fstream>
#include <vector>
using namespace std;
#define N 100000
int aib[N+1];
void update (int n, int i, int a){
while (i<=n){
aib[i]+=a;
i+=i&-i;
}
}
int sum (int n, int i){
int s=0;
while (i>0){
s+=aib[i];
i-=i&-i;
}
return s;
}
int main()
{
FILE *fin, *fout;
int n,q,i,cer,a,b,st,dr,mij;
fin=fopen("aib.in", "r");
fscanf(fin, "%d%d", &n, &q);
for (i=1; i<=n; i++){
fscanf(fin, "%d", &a);
update(n, i, a);
}
fout=fopen("aib.out", "w");
for (i=0; i<q; i++){
fscanf(fin, "%d%d", &cer, &a);
if (cer<2){
fscanf(fin, "%d", &b);
if (cer==0)
update(n, a, b);
else
fprintf(fout, "%d\n", sum(n, b)-sum(n, a-1));
}else{
st=1;
dr=n+1;
while (st<dr){
mij=(st+dr)/2;
if (sum(n, mij)<a)
st=mij+1;
else
dr=mij;
}
if (aib[st]==a)
fprintf(fout, "%d\n", st);
else
fprintf(fout, "-1\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}