#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int NMAX = 15001;
int tree[4 * NMAX];
int a[NMAX];
int N, Q;
int Query(int nod, int lf, int rg, int L, int R)
{
if(L <= lf && rg <= R) return tree[nod];
int ans1, ans2;
ans1 = ans2 = 0;
int mid = (lf + rg) / 2;
if(L <= mid) ans1 = Query(nod * 2, lf, mid, L, R);
if(R > mid) ans2 = Query(nod * 2 + 1, mid + 1, rg, L, R);
return ans1 + ans2;
}
void Update(int nod, int lf,int rg, int pos, int val)
{
if(lf == rg)
{
tree[nod] += val;
return ;
}
int mid = (lf + rg) / 2;
if( pos <= mid )Update(nod * 2, lf, mid, pos, val);
else Update(nod * 2 + 1, mid + 1, rg, pos, val);
tree[nod] = tree[nod * 2] + tree[nod * 2 + 1];
}
void Do()
{
fin >> N >> Q;
for(int i = 1; i <= N; ++i)
{
fin >> a[i];
Update(1, 1, N, i, a[i]);
}
int task, x, y;
for(int q = 1; q <= Q; ++q)
{
fin >> task >> x >> y;
if( task == 0 )Update(1, 1, N, x, -y);
else fout << Query(1, 1, N, x, y) << '\n';
}
}
int main()
{
Do();
return 0;
}