#include<bits/stdc++.h>
using namespace std;
const int N = 1000000+10;
long long sgt[N*4];
int a[N];
void build(int index,int begin,int end){
if(begin == end){
sgt[index] = a[begin];
return ;
}
int mid = (begin+end)/2;
build(index*2,begin,mid);
build(index*2+1,mid+1,end);
sgt[index] = sgt[index*2]+sgt[index*2+1];
}
void update(int index,int begin,int end,int i,int x){
sgt[index] += x;
if(begin == end)return ;
int mid = (begin+end)/2;
if(i <= mid)update(index*2,begin,mid,i,x);
else update(index*2+1,mid+1,end,i,x);
}
long long query(int index,int begin,int end,int L,int R){
if(begin == L&&end == R){
return sgt[index];
}
int mid = (begin+end)/2;
if(R <= mid)return query(index*2,begin,mid,L,R);
else if(L > mid)return query,L,(index*2+1,mid +1,end,L,R);
else return query(index*2,begin,mid,L,mid)+query(index*2+1,mid+1,end,mid+1,R);
}
int main(){
int n,q;
scanf("%d %d",&n,&q);
for(int i = 1;i <= n;i++){
scanf("%d",&a[i]);
}
build(1,1,n);
while(q--){
int op;
scanf("%d",&op);
if(op == 1){
int i,x;
scanf("%d%d",&i,&x);
update(1,1,n,i,x);
}
else{
int l,r;
scanf("%d%d",&l,&r);
printf("%lld\n",query(1,1,n,l,r));
}
}
return 0;
}