#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<int> datorii(60004);
int suma_sume_restante(int x, int y, int nod_curent, int stanga, int dreapta)
{
if(x <= stanga && dreapta <= y)
return datorii[nod_curent];
int mijloc = (stanga+dreapta)/2, suma=0;
if(x<=mijloc) //se duce in stanga
suma += suma_sume_restante(x, y, nod_curent*2, stanga, mijloc);
if(y>mijloc) //se duce in dreapta
suma += suma_sume_restante(x, y, nod_curent*2+1, mijloc+1, dreapta);
return suma;
}
void inserare(int valoare, int nod_curent, int stanga, int dreapta, int pozitie)
{
if (stanga == dreapta) {
datorii[nod_curent] += valoare;
return;
}
int mijloc = (stanga + dreapta) / 2;
if (pozitie <= mijloc)
{ inserare(valoare, 2 * nod_curent, stanga, mijloc, pozitie);}
else
{ inserare(valoare, 2 * nod_curent + 1, mijloc + 1, dreapta, pozitie);}
datorii[nod_curent] = datorii[2*nod_curent] + datorii[2*nod_curent+1];
}
int main() {
ifstream in("datorii.in");
ofstream out("datorii.out");
int n, nr_operatii, element;
in>>n>>nr_operatii;
for(int i=1; i<=n; i++)
{
in>>element;
inserare(element, 1, 1, n, i);
}
for(int i=1; i<=nr_operatii; i++)
{
int tip_operatie, valoare_platita, zi_restanta, p, q;
in>>tip_operatie;
if(tip_operatie==0)
{
in>>zi_restanta>>valoare_platita;
inserare(-valoare_platita, 1, 1, n, zi_restanta);
}
else
{
in>>p>>q;
out<<suma_sume_restante(p, q, 1, 1, n)<<"\n";
}
}
in.close(); out.close();
return 0;
}