#include <bits/stdc++.h>
#define ll long long
#define INF 0x3F3F3F3F
using namespace std;
const string fisier = "datorii";
ifstream fin (fisier + ".in");
ofstream fout (fisier + ".out");
const int N_MAX = 15005;
int n , a[N_MAX] , q , arb[4 * N_MAX];
long long ans;
void build(int st , int dr , int node){
if (st == dr){
arb[node] = a[st];
return;
}
int mij = (st + dr) / 2;
build(st , mij , 2 * node);
build(mij + 1 , dr , 2 * node + 1);
arb[node] = arb[2 * node] + arb[2 * node + 1];
}
void update (int node , int st , int dr , int poz , int val){
if (st == dr){
arb[node] -= val;
return;
}
int mij = (st + dr) / 2;
if (poz <= mij){
update(2 * node , st , mij , poz , val);
}
else{
update(2 * node + 1 , mij + 1 , dr , poz , val);
}
arb[node] = arb[2 * node] + arb[2 * node + 1];
}
void query (int node , int st , int dr , int Qst , int Qdr){
if (Qst <= st && dr <= Qdr){
ans += arb[node];
return;
}
int mij = (st + dr) / 2;
if (Qst <= mij){
query(2 * node , st , mij , Qst , Qdr);
}
if (mij + 1 <= Qdr){
query(2 * node + 1 , mij + 1 , dr , Qst , Qdr);
}
}
int main(){
ios_base::sync_with_stdio(false);
fin >> n >> q;
for (int i=1; i<=n; i++){
fin >> a[i];
}
build(1 , n , 1);
while (q--){
int op , l , r; fin >> op >> l >> r;
if (op == 1){
ans = 0;
query(1 , 1 , n , l , r);
fout << ans << '\n';
}
else{
update(1 , 1 , n , l , r);
}
}
}