#include <iostream>
#include <cstdio>
using namespace std;
int n,m,i,cod,start,finish,restante,nrzi,suma,v[15005],arb[60005];
void creare(int nod, int st, int dr)
{
if (st==dr)
arb[nod]=v[st];
else
{
int mij=(st+dr)/2;
creare(2*nod,st,mij);
creare(2*nod+1,mij+1,dr);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
void achitare(int nod, int st, int dr)
{
if (st==dr)
arb[nod]=max(0,arb[nod]-suma);
else
{
int mij=(st+dr)/2;
if (nrzi<=mij) achitare(2*nod,st,mij);
else achitare(2*nod+1,mij+1,dr);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
void interogare(int nod, int st, int dr)
{
if (start<=st && dr<=finish)
restante=restante+arb[nod];
else
{
int mij=(st+dr)/2;
if (start<=mij) interogare(2*nod,st,mij);
if (mij+1<=finish) interogare(2*nod+1,mij+1,dr);
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=n; i++)
scanf("%d",&v[i]);
creare(1,1,n);
for (i=1; i<=m; i++)
{
scanf("%d",&cod);
if (cod==0)
{
scanf("%d%d",&nrzi,&suma);
achitare(1,1,n);
}
else
{
scanf("%d%d",&start,&finish);
restante=0;
interogare(1,1,n);
printf("%d\n",restante);
}
}
return 0;
}