#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int NMAX=15001;
int tree[4*NMAX+1], arr[NMAX+1];
void build(int v, int st, int dr)
{
if(st==dr)
{
tree[v]=arr[st];
return;
}
int mj=(st+dr)/2;
build(2*v, st, mj);
build(2*v+1, mj+1, dr);
tree[v]=tree[2*v]+tree[2*v+1];
}
void update(int v, int st, int dr, int i, int x)
{
if(st==dr)
{
tree[v]-=x;
return;
}
int mj=(st+dr)/2;
if(i<=mj)
update(2*v, st, mj, i, x);
else
update(2*v+1, mj+1, dr, i, x);
tree[v]=tree[2*v]+tree[2*v+1];
}
int query(int v, int st, int dr, int l, int r)
{
if(st>r || dr<l)
return 0;
if(l<=st && dr<=r)
return tree[v];
int mj=(st+dr)/2;
return query(2*v, st, mj, l, r)+query(2*v+1, mj+1, dr, l, r);
}
int main()
{
int N, M, p, a, b;
fin>>N>>M;
for(int i=1;i<=N;++i)
fin>>arr[i];
build(1, 1, N);
for(int i=0;i<M;++i)
{
fin>>p>>a>>b;
if(p==0)
update(1, 1, N, a, b);
if(p==1)
fout<<query(1, 1, N, a, b)<<'\n';
}
return 0;
}