#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int AINT[60005],n,m,v[15005],x,y,op;
void build(int st, int dr, int node){
if(st==dr){
AINT[node]=v[st];
return;
}
int mij=(st+dr)/2;
build(st, mij, node*2);
build(mij+1, dr, node*2+1);
AINT[node]=AINT[node*2]+AINT[node*2+1];
}
void update(int st, int dr, int node, int val, int pos){
if(st==dr){
AINT[node]-=val;
return;
}
int mij=(st+dr)/2;
if(mij<=pos)
update(st, mij, node*2, val, pos);
else
update(mij+1, dr, node*2+1, val, pos);
AINT[node]=AINT[node*2]+AINT[node*2+1];
}
int query(int st, int dr, int node, int p1, int p2){
if(p1<=st && dr<=p2){
return AINT[node];
}
int mij=(st+dr)/2;
int ans=0;
if(p1<=mij)
ans += query(st, mij, node*2, p1, p2);
if(mij+1<=p2)
ans += query(mij+1, dr, node*2+1, p1, p2);
return ans;
}
int main()
{
in>>n>>m;
for(int i=1;i<=n;i++){
in>>v[i];
}
build(1, n, 1);
for(int i=1;i<=m;i++){
in>>op>>x>>y;
if(op==0)
update(1, n, 1, y, x);
else
out<<query(1, n, 1, x, y)<<'\n';
}
return 0;
}