#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("datorii.in");
ofstream fout ("datorii.out");
int arb_int[4000001];
void facere(int nod, int st, int dr, int poz, int val)
{
if (poz < st or poz > dr) return;
if (st == dr){
arb_int[nod] = val;
return;
}
int mjl = (st + dr) / 2;
facere(2*nod, st, mjl, poz, val);
facere(2*nod+1, mjl+1, dr, poz, val);
arb_int[nod] = arb_int[2*nod] + arb_int[2*nod+1];
}
int sum_q(int nod, int st, int dr, int q_st, int q_dr)
{
if (q_st > dr or q_dr < st) return 0;
if (st >= q_st and dr <= q_dr) return arb_int[nod];
int mjl = (st + dr) / 2;
return sum_q(2*nod, st, mjl, q_st, q_dr) + sum_q(2*nod+1, mjl+1, dr, q_st, q_dr);
}
void change(int nod, int st, int dr, int poz, int val)
{
if (poz < st or poz > dr) return;
if (st == dr){
arb_int[nod] -= val;
return;
}
int mjl = (st + dr) / 2;
change(2*nod, st, mjl, poz, val);
change(2*nod+1, mjl+1, dr, poz, val);
arb_int[nod] = arb_int[2*nod] + arb_int[2*nod+1];
}
int main()
{
int n, m;
fin>>n>>m;
for (int i = 1; i <= n; i++){
int a;
fin>>a;
facere(1, 1, n, i, a);
}
for (int i = 1; i <= m; i++){
int op, aux, bux;
fin>>op>>aux>>bux;
if (op == 1) fout<<sum_q(1, 1, n, aux, bux)<<"\n";
else change(1, 1, n, aux, bux);
}
return 0;
}