#include <bits/stdc++.h>
#define int long long
using namespace std;
const int NMAX = 15005;
int aint[NMAX * 4];
void update(int nod, int st, int dr, int poz, int val)
{
if(st == dr)
{
aint[nod] = val;
return;
}
int mij = (st + dr) / 2;
if(poz <= mij)
update(nod * 2, st, mij, poz, val);
else
update(nod * 2 + 1, mij + 1, dr, poz, val);
aint[nod] = aint[nod * 2] + aint[nod * 2 + 1];
}
int query(int nod, int qst, int qdr, int st, int dr)
{
int sum = 0;
if(qst <= st && dr <= qdr)
return aint[nod];
int mij = (st + dr) / 2;
if(qst <= mij)
sum += query(nod * 2, qst, qdr, st, mij);
if(mij + 1 <= qdr)
sum += query(nod * 2 + 1, qst, qdr, mij + 1, dr);
return sum;
}
signed main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int n, m, a;
cin>>n>>m;
for(int i=1; i<=n; i++)
{
cin>>a;
update(1, 1, n, i, a);
}
int type, b;
for(int i=0; i<m; i++)
{
cin>>type>>a>>b;
if(type == 0)
{
int cur_value = query(1, a, a, 1, n);
//cout<<" ?"<<cur_value<<'\n';
update(1, 1, n, a, cur_value - b);
}
else if(type == 1)
cout<<query(1, a, b, 1, n)<<'\n';
}
return 0;
}