#include <stdio.h>
#define N 15050
int n,m;
int v[N],c[N],s[N];
void read()
{
scanf("%d %d\n",&n,&m);
int i,nr,t,salv;
for (i=1; i<=n; i++)
{
scanf("%d",&v[i]);
s[i]=s[i-1]+v[i];
}
for (i=1; i<=n; i++)
{
nr=0;
salv=i;
while (salv%2==0)
{
nr++;
salv/=2;
}
t=i-(1<<nr)+1;
c[i]=s[i]-s[t-1];
}
}
void update(int ind,int val)
{
int poz=0;
while (ind<=n)
{
c[ind]=c[ind]+val;
while(!(ind&(1<<poz)))
poz++;
ind=ind+(1<<poz);
poz++;
}
}
int query(int dr)
{
int poz=0,s1=0;
while (dr>0)
{
s1=s1+c[dr];
while(!(dr&(1<<poz)))
poz++;
dr=dr-(1<<poz);
poz++;
}
return s1;
}
void solve()
{
int i,tip,ind,val,st,dr,s1,s2;
for (i=1; i<=m; i++)
{
scanf("%d",&tip);
if (tip==0)
{
scanf("%d%d",&ind,&val);
update(ind,-val);
}
else
{
scanf("%d%d",&st,&dr);
s1=query(dr);
s2=query(st-1);
printf("%d\n",s1-s2);
}
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
read();
solve();
return 0;
}
#include <stdio.h>
#define N 15050
int n,m;
int v[N],c[N],s[N];
void read()
{
scanf("%d %d\n",&n,&m);
int i,nr,t,salv;
for (i=1; i<=n; i++)
{
scanf("%d",&v[i]);
s[i]=s[i-1]+v[i];
}
for (i=1; i<=n; i++)
{
nr=0;
salv=i;
while (salv%2==0)
{
nr++;
salv/=2;
}
t=i-(1<<nr)+1;
c[i]=s[i]-s[t-1];
}
}
void update(int ind,int val)
{
int poz=0;
while (ind<=n)
{
c[ind]=c[ind]+val;
while(!(ind&(1<<poz)))
poz++;
ind=ind+(1<<poz);
poz++;
}
}
int query(int dr)
{
int poz=0,s1=0;
while (dr>0)
{
s1=s1+c[dr];
while(!(dr&(1<<poz)))
poz++;
dr=dr-(1<<poz);
poz++;
}
return s1;
}
void solve()
{
int i,tip,ind,val,st,dr,s1,s2;
for (i=1; i<=m; i++)
{
scanf("%d",&tip);
if (tip==0)
{
scanf("%d%d",&ind,&val);
update(ind,-val);
}
else
{
scanf("%d%d",&st,&dr);
s1=query(dr);
s2=query(st-1);
printf("%d\n",s1-s2);
}
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
read();
solve();
return 0;
}