/*
---------------------------
\/\/\/\\\///\\/\/\/\/\/\/\
\ / \ / \ / \ / \ / \ / \
| | | | | | | | | | | | |
| | | | | | | | | | | | |
\ / \ / \ / \ / \ / \ / \
\/\/\/\\\///\\/\/\/\/\/\/\
-------------------------
Secretul e să taci când nu știi ce vrei să vorbești
Nu încerca să pari altcineva când nu știi cine ești
Nu înceta să visezi, e gratis, n-ai ce să pierzi
Să nu crezi în destin, că în timp te plafonezi
*/
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, q;
vector<int> v(15001), t(45001);
ifstream fin("datorii.in");
ofstream fout("datorii.out");
void build(vector<int>& a, int v, int tl, int tr){
if(tl == tr) t[v] = a[tl];
else{
int tm = (tl + tr) / 2;
build(a, v * 2, tl, tm);
build(a, v * 2 + 1, tm + 1, tr);
t[v] = t[v * 2] + t[v * 2 + 1];
}
}
void update(int v, int tl, int tr, int pos, int val){
if(tl == tr) t[v] -= val;
else{
int tm = (tl + tr) / 2;
if(pos <= tm) update(v * 2, tl, tm, pos, val);
else update(v * 2 + 1, tm + 1,tr, pos, val);
t[v] = t[v * 2] + t[v * 2 + 1];
}
}
int query(int v, int tl, int tr, int l, int r){
if(l <= tl && r >= tr) return t[v];
if(tr < l || tl > r) return 0;
else{
int tm = (tl + tr) / 2;
int sum1 = query(v * 2, tl, tm, l, r);
int sum2 = query(v * 2 + 1, tm + 1, tr, l, r);
return sum1 + sum2;
}
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
fin >> n >> q;
for(int i = 1; i <= n; i++)
fin >> v[i];
build(v, 1, 1, n);
while(q--){
int task;
fin >> task;
if(task == 0){
int pos, val;
fin >> pos >> val;
update(1, 1, n, pos, val);
}
else{
int l, r;
fin >> l >> r;
fout << query(1, 1, n, l, r) << '\n';
}
}
}