#include<stdio.h>
#define MaxN 3000000
#define lf 2 * nod
#define rf 2 * nod + 1
#define mij ( st + dr ) / 2
long long AI[MaxN];
int A[15100];
int N;
int M;
int stare;
int a;
int b;
long long build(int nod,int st,int dr)
{
if(st == dr)
AI[nod] = A[st];
else
AI[nod] += build(lf,st,mij) + build(rf,mij + 1 , dr);
return AI[nod];
}
int update(int nod,int st,int dr,int t,int v)
{
if(st<=t && t<=dr)
AI[nod] -= v;
else if( t <= mij )
update(lf,st,mij,t,v);
else
update(rf , mij + 1 , dr , t , v);
}
long long querry(int nod,int st,int dr,int a,int b)
{
long long sum = 0;
if(a <= st && dr <= b)
return AI[nod];
if(a <= mij)
sum += querry(lf , st , mij , a , b);
if(mij < b)
sum += querry(rf , mij + 1 , dr , a , b);
return sum;
}
int main()
{
FILE *f = fopen("datorii.in","r");
FILE *g = fopen("datorii.out","w");
fscanf(f,"%d %d",&N,&M);
for(int i=1;i<=N;i++)
fscanf(f,"%d ",&A[i]);
build(1,1,N);
// for(int i=1;i<=11;i++)
// printf("%3d ",AI[i]);
for(int i=1;i<=M;i++)
{
fscanf(f,"%d %d %d",&stare,&a,&b);
if(!stare)
update(1,1,N,a,b);
else
fprintf(g,"%llu\n",querry(1,1,N,a,b));
}
fclose(g);
fclose(f);
return 0;
}