#include <fstream>
#include <iostream>
using namespace std;
int Arb[60004];
void update(int nod,int l,int r,int &Val,int& Pos){
if(l==r){
Arb[nod]+=Val;
return;
}
int mid=(l+r)/2;
if(Pos<=mid) update(nod*2,l,mid,Val,Pos);
else update(nod*2+1,mid+1,r,Val,Pos);
Arb[nod]=Arb[nod*2+1]+Arb[nod*2];
}
int query(int nod,int l,int r,int a,int b){
if(a<=l && b>=r){
return Arb[nod];
}
int mid=(l+r)/2,ret=0;
if(a<=mid) ret+=query(nod*2,l,mid,a,b);
if(b>mid) ret+=query(nod*2+1,mid+1,r,a,b);
return ret;
}
int main (){
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,x,y,t,v;
f >> n >> m;
for(int i=1;i<=n;i++){
f >> x;
update(1,1,n,x,i);
}
for(;m;m--){
f >> t >> x >> y;
if(t==0){
y=-y;
update(1,1,n,y,x);
}
else{
g << query(1,1,n,x,y) << "\n";
}
}
}