#include <stdio.h>
#define NMAX 15002
long int arb[NMAX*3],i,j,k,n,m,a[NMAX],sum;
void citire()
{
freopen("datorii.in","rt",stdin);
freopen("datorii.out","wt",stdout);
scanf("%ld %ld",&n,&m);
for (i=1;i<=n;i++)
scanf("%ld",&a[i]);
}
void build(long int nod, long int st, long int dr)
{
if (st==dr) arb[nod]=a[st];
else {
long int mid=(st+dr)/2;
build(nod*2,st,mid);
build(nod*2+1,mid+1,dr);
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
}
void update(long int nod, long int st, long int dr, long int poz, long int val)
{
if (st==dr) arb[nod]-=val;
else {
long int mid=(st+dr)/2;
if (poz<=mid) update(nod*2,st,mid,poz,val);
else update(nod*2+1,mid+1,dr,poz,val);
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
}
void query(long int nod, long int st, long int dr, long int a, long int b)
{
if ((a<=st)&&(dr<=b)) sum+=arb[nod];
else {
long int mid=(st+dr)/2;
if (a<=mid) query(nod*2,st,mid,a,b);
if (b>mid) query(nod*2+1,mid+1,dr,a,b);
}
}
void answer()
{
long int k,x,y;
for (i=1;i<=m;i++)
{
scanf("%ld %ld %ld",&k,&x,&y);
if (k==0) update(1,1,n,x,y);
else {sum=0;
query(1,1,n,x,y);
printf("%ld\n",sum);
}
}
}
int main()
{
citire();
build(1,1,n);
answer();
}