#include <stdio.h>
using namespace std;
int t[32768];
void Facerea(int n, int st, int dr, int poz, int val)
{
if(st==dr) {t[n]=val;return;}
int m=(st+dr)>>1;
if(poz<=m) Facerea(2*n,st,m,poz,val);
else Facerea(2*n+1,m+1,dr,poz,val);
t[n]=t[2*n]+t[2*n+1];
}
void update(int n, int st, int dr, int poz, int val)
{
if(st==dr) {t[n]-=val;return;}
int m=(st+dr)>>1;
if(poz<=m) update(2*n,st,m,poz,val);
else update(2*n+1,m+1,dr,poz,val);
t[n]=t[2*n]+t[2*n+1];
}
int query(int n, int st, int dr, int a, int b)
{
if(a<=st && dr<=b) return t[n];
int m=(st+dr)>>1,r1=0,r2=0;
if(a<=m) r1=query(2*n,st,m,a,b);
if(b>m) r2=query(2*n+1,m+1,dr,a,b);
return r1+r2;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int n,m,i,j,p,q,tip;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&j);
Facerea(1,1,n,i,j);
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&tip,&p,&q);
if(tip==0)
update(1,1,n,p,q);
else printf("%d\n",query(1,1,n,p,q));
}
return 0;
}