#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int NMAX = 15001;
int arr[NMAX], t[4 * NMAX];
int N, M;
void build_sum(int v, int tl, int tr)
{
if(tl == tr)
{
t[v] = arr[tl];
} else
{
int tm = (tl + tr) / 2;
build_sum(v * 2, tl, tm);
build_sum(v * 2 + 1, tm + 1, tr);
t[v] = t[v * 2] + t[v * 2 + 1];
}
}
int query_sum(int v, int tl, int tr, int l, int r)
{
if(l > r)
return 0;
if(l == tl && r == tr)
return t[v];
int tm = (tl + tr) / 2;
return query_sum(v * 2, tl, tm, l, min(r, tm)) + query_sum(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r);
}
void update_sum(int v, int tl, int tr, int pos, int val)
{
if(tl == tr)
t[v] -= val;
else
{
int tm = (tl + tr) / 2;
if(pos <= tm)
update_sum(v * 2, tl, tm, pos, val);
else
update_sum(v * 2 + 1, tm + 1, tr, pos, val);
t[v] = t[2 * v] + t[2 * v + 1];
}
}
int main()
{
in >> N >> M;
for(int i = 1; i <= N; i++)
in >> arr[i];
build_sum(1, 1, N);
int op, a, b;
for(int i = 1; i <= M; i++)
{
in >> op >> a >> b;
if(op == 0)
{
update_sum(1, 1, N, a, b);
} else if(op == 1)
{
out << query_sum(1, 1, N, a, b) << "\n";
}
}
return 0;
}