#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int stree[400002], s;
void update(int i, int st, int dr, int poz, int val)
{
if (st == dr) {
stree[i] += val;
return;
}
int mij = (st + dr )/ 2;
if (poz <= mij) // daca elementul cautat este mai mic, mergem in subarborele stang
update (2*i, st, mij, poz, val);
else //mergem in subarborele drept
update (2*i+1, mij + 1, dr, poz, val);
stree[i] = stree[2*i] + stree[2*i + 1] ; // calculam suma copiilor
}
int query(int i, int st, int dr, int x, int y)
{
if (x <= st && y >= dr)
return stree[i];
int mij = (st + dr )/ 2;
int suma1 = 0, suma2=0;
if (x <= mij)
suma1 = query(2*i, st, mij, x, y);
if (y > mij)
suma2 = query(2*i+1, mij + 1, dr, x, y);
return suma1 + suma2;
}
int n, m, a, op, b;
int main()
{
fin >> n >> m;
for (int i=1; i<=n; i++)
{
fin >> a;
update(1, 1, n, i, a);
}
for (int i=1; i<=m; i++)
{
fin >> op >> a >> b;
if (op==0)
{
update(1, 1, n, a, -b);
}
else
{
fout << query(1, 1, n, a, b) << '\n';
}
}
return 0;
}