#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int arb[500001], v[100001];
void create(int node, int left, int right){
if(left == right){
arb[node] = v[left];
} else {
create(node * 2, left, (left + right) / 2);
create(node * 2 + 1, (left + right) / 2 + 1, right);
arb[node] = arb[node * 2]+ arb[node * 2 + 1];
}
}
void update(int node, int left, int right, int pos, int val){
if(left == right){
arb[node] -= val;
} else {
int mij=(left + right) / 2;
if(pos<=mij)
update(node * 2, left, mij, pos, val);
else
update(node * 2 + 1, mij+ 1, right, pos, val);
arb[node] = arb[node * 2]+arb[node * 2 + 1];
}
}
int query(int node, int left, int right, int i, int j){
if(right < i || left > j)
return 0;
if(i <= left && right <= j)
return arb[node];
int mij=(left + right) / 2;
return query(node * 2, left, mij, i, j)+ query(node * 2 + 1, mij+1, right, i, j);
}
int main()
{
int n, m, x, y, caz;
in >> n >> m;
for(int i = 1; i <= n; i++)
in >> v[i];
create(1, 1, n);
for(int i = 1; i <= m; i++){
in >> caz >> x >> y;
if(caz == 0)
update(1, 1, n, x, y);
else
out<<query(1,1,n,x,y)<<endl;
}
return 0;
}