#include <stdio.h>
#define INF "datorii.in"
#define OUF "datorii.out"
#define NMAX 16384
int sg[32768]={0},suma,a,b;
void insert(int nod,int st,int dr)
{
if(a<=st&&dr<=b) sg[nod]=sum;
else{
int mij,ok=1;
mij=(st+dr)/2;
if(a<=mij)
{
sg[nod]+=sum;ok=0;
insert(2*nod,st,mij);
}
if(b>mij)
{
if(ok) sg[nod]+=sum;
insert(2*nod+1,mij+1,dr);
}
}
}
void pay(int nod,int st,int dr)
{
if(a<=st&&dr<=b) sg[nod]-=sum;
else
{
int mij,ok=1;
mij=(st+dr)/2;
if(a<=mij)
{
sg[nod]-=sum;ok=0;
pay(2*nod,st,mij);
}
if(b>mij)
{
if(ok) sg[nod]-=sum;
pay(2*nod+1,mij+1,dr);
}
}
}
int quest(int nod,int st,int dr)
{
if(a<=st&&dr<=b) return sg[nod];
else
{
int mij,alfa=0,beta=0;
mij=(st+dr)/2;
if(a<=mij) alfa=quest(2*nod,st,mij);
if(b>mij) beta=quest(2*nod+1,mij+1,dr);
return alfa+beta;
}
}
int main()
{
register int n,i,op,p,m,q;
//unsigned long long q;
FILE *in,*out;
in=fopen(INF,"r");
out=fopen(OUF,"w");
fscanf(in,"%d %d",&n,&m);
for(i=1;i<=n;i++)
{
fscanf(in,"%d",&q);
a=i;b=i;sum=q;
insert(1,1,n);
}
for(i=1;i<=m;i++)
{
fscanf(in,"%d %d %d",&op,&p,&q);
if(op)
{
a=p;b=q;
fprintf(out,"%d\n",quest(1,1,n));
}
else
{
a=b=p;sum=q;
pay(1,1,n);
}
}
fclose(in);fclose(out);
return 0;
}