#include <fstream>
using namespace std;
ofstream out("datorii.out");
class Parser
{
private:
static const int BUFF_SIZE = 5000000;
ifstream in;
char buffer[BUFF_SIZE];
int posBuff;
public:
Parser(char* file)
{
in = ifstream(file);
posBuff = BUFF_SIZE - 1;
}
int getInt()
{
int rez = 0;
while (!('0' <= buffer[posBuff] && buffer[posBuff] <= '9'))
{
posBuff++;
if (posBuff == BUFF_SIZE)
{
posBuff = 0;
in.read(buffer, BUFF_SIZE);
}
}
while ('0' <= buffer[posBuff] && buffer[posBuff] <= '9')
{
rez = rez * 10 + buffer[posBuff] - '0';
posBuff++;
if (posBuff == BUFF_SIZE)
{
posBuff = 0;
in.read(buffer, BUFF_SIZE);
}
}
return rez;
}
};
Parser input("datorii.in");
const int NMAX = 15000;
int aint[1+3*NMAX];
int v[1 + NMAX];
void build (int indexNod, int st, int dr)
{
if (st == dr)
{
aint[indexNod] = v[st];
return;
}
int indexFiuSt = 2 * indexNod;
int indexFiuDr = 2 * indexNod + 1;
int mij = (st+ dr) / 2;
build(indexFiuSt, st, mij);
build(indexFiuDr, mij+1 , dr);
aint[indexNod] = aint[indexFiuSt] + aint[indexFiuDr];
}
void update(int indexNod, int st, int dr, int poz, int val)
{
if(st == dr)
{
aint[indexNod] -= val;
return;
}
int indexFiuSt = 2 * indexNod;
int indexFiuDr = 2 * indexNod + 1;
int mij = (st + dr)/2;
if(poz <= mij)
update(indexFiuSt, st, mij, poz, val);
else
update(indexFiuDr, mij + 1, dr, poz, val);
aint[indexNod] = aint[indexFiuSt] + aint[indexFiuDr];
}
int query(int indexNod, int st, int dr, int stQuery, int drQuery)
{
if( stQuery == st && drQuery == dr)
{
return aint[indexNod];
}
int indexFiuSt = 2 * indexNod;
int indexFiuDr = 2 * indexNod + 1;
int mij = (st + dr)/2;
int sol;
if (drQuery <= mij)
sol = query(indexFiuSt, st, mij, stQuery, drQuery);
else if(stQuery >= mij + 1)
sol = query(indexFiuDr, mij + 1, dr, stQuery, drQuery);
else
sol = query(indexFiuSt, st, mij, stQuery, mij) + query(indexFiuDr, mij + 1, dr, mij + 1, drQuery);
return sol;
}
int main()
{
int n, m;
n = input.getInt();
m = input.getInt();
for(int i = 1; i<= n; i++)
{
v[i] = input.getInt();
}
build(1,1,n);
for( int j = 1; j <= m; j++)
{
int tipOperatie, a, b;
tipOperatie = input.getInt();
a = input.getInt();
b = input.getInt();
if (tipOperatie == 0)
{
update(1, 1, n, a, b);
}
else
{
out << query(1, 1, n, a, b) << '\n';
}
}
return 0;
}