#include <stdio.h>
long v[225356], a,b, S;
void update(long ind,long st,long dr)
{
if(st==dr)
{
v[ind]-=b;
}
else
{
long sc=(st+dr)>>1;
if(a<=sc)
update(ind<<1,st,sc);
if(sc<a)
update((ind<<1)+1,sc+1,dr);
v[ind]=v[ind<<1]+v[(ind<<1)+1];
}
}
void make(long ind,long st,long dr)
{
if(st==dr)
{
v[ind]=b;
}
else
{
long sc=(st+dr)>>1;
if(a<=sc)
make(ind<<1,st,sc);
if(sc<a)
make((ind<<1)+1,sc+1,dr);
v[ind]=v[ind<<1]+v[(ind<<1)+1];
}
}
void query(long ind,long st,long dr)
{
if(a<=st && dr<=b)
{
S+=v[ind];
}
else
{
long sc=(st+dr)>>1;
if(a<=sc)
query(ind<<1,st,sc);
if(sc<b)
query((ind<<1)+1,sc+1,dr);
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
register long i,n,m,tmp;
scanf("%ld%ld",&n,&m);
for(i=1;i<=n;++i)
{
scanf("%ld",&b);
a=i;
make(1,1,n);
}
for(i=1;i<=m;++i)
{
scanf("%ld",&tmp);
if(tmp)
{
scanf("%ld%ld",&a,&b);
S=0;
query(1,1,n);
printf("%ld\n", S);
}
else
{
scanf("%ld%ld",&a,&b);
update(1,1,n);
}
}
return 0;
}