#include <iostream>
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int a[4000001];
void creaza_arb (int nod, int l, int r, int poz, int x )
{
if(poz < l || poz > r) return;
if(l == r)
{
a[nod]=x;
return;
}
int m =(l+r)/2;
creaza_arb(2*nod, l, m, poz, x);
creaza_arb (2*nod+1, m+1, r, poz, x);
a[nod] = a[2*nod] + a[2*nod+1];
}
int suma(int nod, int l, int r, int st, int dr)
{
if(st > r || dr < l) return 0;
if( l >= st && r <= dr) return a[nod];
int m=(l+r)>>1;
return suma(2*nod, l, m, st, dr) + suma(2*nod+1, m+1, r, st, dr);
}
void modifica (int nod, int l, int r, int poz, int x )
{
if(poz < l || poz > r) return;
if(l == r)
{
a[nod]-=x;
return;
}
int m =(l+r)/2;
modifica(2*nod, l, m, poz, x);
modifica(2*nod+1, m+1, r, poz, x);
a[nod] = a[2*nod] + a[2*nod+1];
}
int main()
{
int n, m;
f>>n>>m;
for( int i=1; i<=n; i++)
{
int a;
f>>a;
creaza_arb(1, 1, n, i, a);
}
int ope, a, b;
for ( int i=1; i<=m; i++)
{
f>>ope>>a>>b;
if(ope==1) {g<<suma(1, 1, n, a, b)<<"\n";}
else modifica(1, 1, n, a, b);
}
return 0;
}