#include<bits/stdc++.h>
using namespace std;
const int _=5e5+10;
struct node {
int sum,l,r;
} tree[4*_];
int a[_];
void init(int l,int r,int k) {
if(l==r) {
tree[k].l = tree[k].r = l;
tree[k].sum=a[l];
return;
}
tree[k].l=l;
tree[k].r=r;
int mid=(l+r)/2;
init(l,mid,k*2);
init(mid+1,r,k*2+1);
tree[k].sum=tree[k*2].sum+tree[k*2+1].sum;
}
void update(int x,int v,int i) {
tree[i].sum+=v;
if(tree[i].l==tree[i].r){
return;
}
int mid=(tree[i].l+tree[i].r)/2;
if(tree[i].l<=x<=mid){
update(x,v,i*2);
}else{
update(x,v,i*2+1);
}
}
int getsum(int x,int y, int k){
if(x <= tree[k].l && tree[k].r <= y) {
return tree[k].sum;
}
int ans = 0, mid = (tree[k].l + tree[k].r) / 2;
if(x <= mid) ans += getsum(x, mid, k * 2);
if(y > mid) ans += getsum(mid+1, y, k * 2 + 1);
return ans;
}
int main() {
int n,m;
cin>>n>>m;
for(int i=1; i<=n; i++) {
cin>>a[i];
}init(1,n,1);
for(int i=1; i<=m; i++) {
int op,x,y;
cin>>op>>x>>y;
if(op==1)update(x,y,1);
else{
cout<<getsum(x,y,1)<<endl;
}
}
return 0;
}