#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int tree[60001], v[15001];
void build(int v[], int node, int lx, int rx)
{
if(rx - lx == 1)
{
tree[node] = v[lx];
return;
}
int mij = (lx + rx) / 2;
build(v, 2 * node + 1, lx, mij);
build(v, 2 * node + 2, mij, rx);
tree[node] = tree[2 * node + 1] + tree[2 * node + 2];
}
void scad(int i, int val, int node, int lx, int rx)
{
if(rx - lx == 1)
{
tree[node] -= val;
return;
}
int mij = (lx + rx) / 2;
if(i <= mij)
scad(i, val, 2 * node + 1, lx, mij);
else
scad(i, val, 2 * node + 2, mij, rx);
tree[node] = tree[2 * node + 1] + tree[2 * node + 2];
}
int sum(int l, int r, int node, int lx, int rx)
{
if(l <= lx && rx <= r)
return tree[node];
if(lx >= r || rx <= l)
return 0;
int mij = (lx + rx) / 2;
int s1, s2;
s1 = sum(l, r, 2 * node + 1, lx, mij);
s2 = sum(l, r, 2 * node + 2, mij, rx);
return s1 + s2;
}
int main()
{
int n, q, i;
fin >> n >> q;
for(i = 0; i < n; i++)
fin >> v[i];
build(v, 0, 0, n);
for(i = 0; i < q; i++)
{
int tip, a, b;
fin >> tip >> a >> b;
if(tip == 0)
--a, scad(a, b, 0, 0, n);
else
--a, fout << sum(a, b, 0, 0, n) << '\n';
}
return 0;
}