#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
FILE *out,*in;
long c[15001];
long n,i,ind,val,poz;
long rez,s1,s2;
long cate,j,st,dr;
int op;
out=fopen("datorii.out","w");
in=fopen("datorii.in","r");
fscanf(in,"%ld",&n);
fscanf(in,"%ld",&cate);
for (i=0;i<=n;i++)
c[i]=0;
for(i=1;i<=n;i++)
{
ind=i;
fscanf(in,"%ld",&val);
poz=0;
while(ind<=n)
{
c[ind]=c[ind]+val;
rez=ind&(long)pow(2,poz);
while(rez==0)
{
poz=poz+1;
rez=ind&(long)pow(2,poz);
}
ind=ind+pow(2,poz);
poz=poz+1;
}
}
//for(i=1;i<=n;i++)
// fprintf(out,"%d ",c[i]);
for(i=1;i<=cate;i++)
{
fscanf(in,"%d",&op);
if(op==0)
{
fscanf(in,"%ld",&ind);
fscanf(in,"%ld",&val);
poz=0;
while(ind<=n)
{
c[ind]=c[ind]-val;
rez=ind&(long)pow(2,poz);
while(rez==0)
{
poz=poz+1;
rez=ind&(long)pow(2,poz);
}
ind=ind+pow(2,poz);
poz=poz+1;
}
}
else
{
fscanf(in,"%ld",&st);
fscanf(in,"%ld",&dr);
s1=0;
poz=0;
while(dr>0)
{
s1=s1+c[dr];
rez=dr&(long)pow(2,poz);
while(rez==0)
{
poz=poz+1;
rez=dr&(long)pow(2,poz);
}
dr=dr-pow(2,poz);
poz=poz+1;
}
st=st-1;
s2=0;
poz=0;
while(st>0)
{
s2=s2+c[st];
rez=st&(long)pow(2,poz);
while(rez==0)
{
poz=poz+1;
rez=st&(long)pow(2,poz);
}
st=st-pow(2,poz);
poz=poz+1;
}
fprintf(out,"%ld\n",s1-s2);
}
}
fclose(in);
fclose(out);
return 0;
}