#include <cstdio>
#include <fstream>
using namespace std;
int maxim=0;
int sum;
int v[100001],aint[100001];
void update(int nod,int st,int dr,int poz,int x)
{
if(st==dr)
{
aint[nod]-=x;
v[poz]-=x;
return;
}
int mij=(st+dr)/2;
if(poz<=mij)
update(nod*2,st,mij,poz,x);
else
update(nod*2+1,mij+1,dr,poz,x);
aint[nod]=aint[nod*2]+aint[nod*2+1];
}
void query(int nod,int st,int dr,int A,int B)
{
if(A<=st&&dr<=B)
{
sum+=aint[nod];
return ;
}
int mij=(st+dr)/2;
if(mij>=A)
query(nod*2,st,mij,A,B);
if(mij+1<=B)
query(nod*2+1,mij+1,dr,A,B);
}
void Build(int nod,int st,int dr)
{
if(st==dr)
{
aint[nod]=v[st];
return;
}
int mij=(st+dr)/2;
Build(nod*2,st,mij);
Build(nod*2+1,mij+1,dr);
aint[nod]=aint[2*nod]+aint[2*nod+1];
}
int main()
{
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,i,ok,a,b;
fin>>n>>m;
for(i=1; i<=n; i++)
fin>>v[i];
Build(1,1,n);
for(i=1; i<=m; i++)
{
fin>>ok>>a>>b;
//fout<<ok<<" "<<a<<" "<<b<<"\n";
if(ok==0)
update(1,1,n,a,b);
else
{
sum=0;
query(1,1,n,a,b);
fout<<sum<<"\n";
}
}
for(i=1;i<=n;i++)
//fout<<v[i]<<" ";
return 0;
}