//BMC
#include<stdio.h>
FILE *f,*g;
struct nod{int sum,a,b; nod *st,*dr;};
nod* create(int a,int b)
{
nod *q;
q=new nod;
q->sum=0;
q->a=a;
q->b=b;
if(a==b) q->st=q->dr=0;
else
{
q->st=create(a,(a+b)/2);
q->dr=create((a+b)/2+1,b);
}
return q;
}
void change(int p,int v,nod *q)
{
q->sum+=v;
if(q->a!=q->b)
if(p>(q->a+q->b)/2) change(p,v,q->dr);
else change(p,v,q->st);
}
int afis(int x,int y, nod *q)
{
if(q->a==x&&y==q->b) return q->sum;
if(x> (q->a+q->b)/2) return afis(x,y,q->dr);
if(y<=(q->a+q->b)/2) return afis(x,y,q->st);
return afis(x,(q->a+q->b)/2,q->st) + afis((q->a+q->b)/2+1,y,q->dr);
}
int main()
{
int n,m,i,j,x,y,c,a;
nod *rad;
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
fscanf(f,"%d %d",&n,&m);
rad=create(1,n);
for(i=1;i<=n;i++)
{
fscanf(f,"%d ",&c);
change(i,c,rad);
}
for(i=1;i<=m;i++)
{
fscanf(f,"%d %d %d",&c,&x,&y);
if(c==0) change(x,-y,rad);
else { a=afis(x,y,rad); fprintf(g,"%d\n",&a); }
}
return 0;
}