#include<stdio.h>
int a[15001],arb[30000];
void create(int nod,int x,int y)
{
if(x>y)
{
return;
}
else if(x==y)
{
arb[nod]=a[x];
return;
}
create(2*nod,x,(x+y)/2);
create(2*nod+1,(x+y)/2+1,y);
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
int check(int nod,int st,int dr,int x,int y)
{
if(st==x&&dr==y)
{
return arb[nod];
}
int mij=(st+dr)/2;
if(y<=mij)
{
return check(nod*2,st,mij,x,y);
}
else if(x>mij)
{
return check(nod*2+1,mij+1,dr,x,y);
}
else
{
return check(nod*2,st,mij,x,mij)+check(nod*2+1,mij+1,dr,mij+1,y);
}
}
void update(int nod,int st,int dr,int val,int change)
{
if(st==dr)
{
arb[nod]-=change;
}
else if(st<dr)
{
int mij=(st+dr)/2;
if(val<=mij)
{
update(nod*2,st,mij,val,change);
}
else
{
update(nod*2+1,mij+1,dr,val,change);
}
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
}
int main()
{
FILE *fin,*fout;
fin=fopen("datorii.in","r");
fout=fopen("datorii.out","w");
int n,m,t,t2;
fscanf(fin,"%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
fscanf(fin,"%d",&a[i]);
}
create(1,1,n);
for(int i=1;i<=m;i++)
{
fscanf(fin,"%d",&t);
if(t==0)
{
fscanf(fin,"%d %d",&t,&t2);
update(1,1,n,t,t2);
}
else
{
fscanf(fin,"%d %d",&t,&t2);
fprintf(fout,"%d\n",check(1,1,n,t,t2));
}
}
}