#include <cstdio>
#define M 15005
using namespace std;
int a[M], heap[4*M], n, m, x, p, q, s;
void build(int st, int dr, int nod)
{
if (st == dr)
{
heap[nod] = a[st];
return;
}
int mij = (st+dr)>>1;
int ns = nod<<1;
build (st, mij, ns);
build (mij+1, dr, ns+1);
heap[nod] = heap[ns] + heap[ns+1];
}
void suma(int st, int dr, int nod)
{
if (p <= st && q >= dr)
{
s += heap[nod];
return;
}
int mij = (st+dr)>>1;
int ns = nod<<1;
if (p <= mij)
suma (st, mij, ns);
if (q > mij)
suma (mij+1, dr, ns+1);
}
void add(int st, int dr, int nod)
{
if (st == dr)
{
heap[nod] -= q;
return;
}
int mij = (st+dr)>>1;
int ns = nod<<1;
if (p <= mij)
add (st, mij, ns);
else
add (mij+1, dr, ns+1);
heap[nod] = heap[ns] + heap[ns+1];
}
void citire()
{
scanf ("%d %d ", &n, &m);
for (int i=1; i<=n; i++)
scanf ("%d ", &a[i]);
build (1, n, 1);
for (int i=1; i<=m; i++)
{
scanf ("%d %d %d ", &x, &p, &q);
if (x == 1)
{
s = 0;
suma (1, n, 1);
printf ("%d\n", s);
}
else
add (1, n, 1);
}
}
int main()
{
freopen ("datorii.in","r",stdin);
freopen ("datorii.out","w",stdout);
citire();
return 0;
}