#include <iostream>
#include <cstdio>
using namespace std;
int m,n,vCitire[15001],suma,a[100000];
void citire()
{
scanf("%d%d",&m,&n);
for(int i=1; i<=m; i++)
scanf("%d",&vCitire[i]);
}
void build(int pai,int st,int dr)
{
if(st==dr)
{
a[pai]=vCitire[st];
return;
}
int mij=(st+dr)/2;
build(2*pai,st,mij);
build(2*pai+1,mij+1,dr);
a[pai]=a[2*pai]+a[2*pai+1];
}
void update(int pai,int st,int dr,int undeTrebuie,int cuCeTrebuie)
{
if(st==dr)
{
a[pai]-=cuCeTrebuie;
return;
}
int mij=(st+dr)/2;
if(mij>=undeTrebuie)
update(2*pai,st,mij,undeTrebuie,cuCeTrebuie);
else
update(2*pai+1,mij+1,dr,undeTrebuie,cuCeTrebuie);
a[pai]=a[2*pai]+a[2*pai+1];
}
void aflareSuma(int pai,int st,int dr,int ST,int DR)
{
if(st>=ST&&dr<=DR)
{
suma+=a[pai];
return;
}
int mij=(st+dr)/2;
if(mij>=ST)
aflareSuma(2*pai,st,mij,ST,DR);
if(mij<DR)
aflareSuma(2*pai+1,mij+1,dr,ST,DR);
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
citire();
build(1,1,m);
int op,st,dr;
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&op,&st,&dr);
if(op)
{
suma=0;
aflareSuma(1,1,m,st,dr);
printf("%d\n",suma);
}
else
{
update(1,1,m,st,dr);
}
}
return 0;
}