#include<bits/stdc++.h>
using namespace std;
const int N=5e5+1;
int w[N];
struct tree{
int l,r,sum;
}tr[N*4];
void build(int fa,int l,int r){
tr[fa].l=l,tr[fa].r=r;
if(l==r){
tr[fa].sum=tr[fa].l;
return ;
}
int mid=(l+r)/2;
build(fa*2,l,mid);
build(fa*2+1,mid+1,r);
tr[fa].sum=tr[fa*2].sum+tr[fa*2+1].sum;
}
void updata(int fa,int x,int k){
if(tr[fa].l==x&&tr[fa].r==x){
tr[fa].sum+=k;
return ;
}
int mid=(tr[fa].l+tr[fa].r)/2;
if(x<=mid){
updata(fa*2,x,k);
}
else{
updata(fa*2+1,x,k);
}
tr[fa].sum=tr[fa*2].sum+tr[fa*2+1].sum;
}
int query(int fa,int x,int y){
if(tr[fa].l>=x&&tr[fa].r<=y){
return tr[fa].sum;
}
int mid=(tr[fa].l+tr[fa].r)/2,sum=0;
if(x<=mid){
sum+=query(fa*2,x,y);
}
if(y>mid){
sum+=query(fa*2+1,x,y);
}
return sum;
}
signed main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>w[i];
build(1,1,n);
while(m--){
int id;
cin>>id;
if(id==1){
int x,k;
cin>>x>>k;
updata(1,x,k);
}
else{
int x,y;
cin>>x>>y;
cout<<query(1,x,y)<<"\n";
}
}
return 0;
}