#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int nmax=15001;
int v[nmax], aint[nmax*4];
void build_aint(int nod, int l, int r)
{
if(l==r)
{
aint[nod]=v[l];
return;
}
build_aint(nod*2, l, (l+r)/2);
build_aint(nod*2+1, (l+r)/2+1, r);
aint[nod]=aint[nod*2]+aint[nod*2+1];
}
void achit(int nod, int l, int r, int T, int V)
{
if(l==r)
{
aint[nod]-=V;
return;
}
if(T<=(l+r)/2)
achit(nod*2, l, (l+r)/2, T, V);
else
achit(nod*2+1, (l+r)/2+1, r, T, V);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
void query(int nod, int l, int r, int a, int b, int &ans)
{
if(a<=l && r<=b)
{
ans+=aint[nod];
return;
}
if(a<=(l+r)/2)
query(nod*2, l, (l+r)/2, a, b, ans);
if(b>(l+r)/2)
query(nod*2+1, (l+r)/2+1, r, a, b, ans);
}
int main()
{
int n, m;
fin >> n >> m;
for(int i=1; i<=n; i++)
fin >> v[i];
build_aint(1, 1, n);
int c, a, b, ans;
for(int i=1; i<=m; i++)
{
fin >> c >> a >> b;
if(c==0)
achit(1, 1, n, a, b);
else
{
ans=0;
query(1, 1, n, a, b, ans);
fout << ans << '\n';
}
}
return 0;
}