#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int Arb[60010],V[15010];
void ArbInt(int Ind,int St,int Dr)
{
if (St == Dr)
Arb[Ind] = V[St];
else
{
int Mij = (St+Dr)/2;
ArbInt(Ind*2,St,Mij);
ArbInt(Ind*2+1,Mij+1,Dr);
Arb[Ind] = Arb[Ind*2] + Arb[Ind*2+1];
}
}
int Suma(int Ind,int St,int Dr,int MargInf,int MargSup)
{
if (MargInf > MargSup)
return 0;
if (MargInf == St && MargSup == Dr)
return Arb[Ind];
int Mij = (St+Dr)/2;
return Suma(Ind*2,St,Mij,MargInf,min(MargSup,Mij))+Suma(Ind*2+1,Mij+1,Dr,max(Mij+1,MargInf),MargSup);
}
void Schimb(int Ind,int St,int Dr,int Poz,int Val)
{
if (St == Dr)
{
if (Arb[Ind]-Val < 0)
Arb[Ind] = 0;
else
Arb[Ind] = Arb[Ind]-Val;
}
else
{
int Mij = (St+Dr)/2;
if (Poz <= Mij)
Schimb(Ind*2,St,Mij,Poz,Val);
else
Schimb(Ind*2+1,Mij+1,Dr,Poz,Val);
Arb[Ind] = Arb[Ind*2]+Arb[Ind*2+1];
}
}
int main()
{
int n,m,a,b;
bool x;
fin>>n>>m;
for (int i=1;i<=n;i++)
fin>>V[i];
ArbInt(1,1,n);
for (int i=0;i<m;i++)
{
fin>>x>>a>>b;
if (x)
fout<<Suma(1,1,n,a,b)<<"\n";
else
Schimb(1,1,n,a,b);
}
fin.close();
fout.close();
return 0;
}