#include <cstdio>
#define maxn 15010
using namespace std;
int a[4*maxn];
int m,n;
int val,poz,tip;
int start,finish,s;
void update(int nod, int st, int dr)
{
if(st==dr)
{
a[nod]=val;
return;
}
else
{
int mij=(st+dr)/2;
if(poz<=mij)
update(nod*2,st,mij);
else
update(nod*2+1,mij+1,dr);
a[nod]=a[2*nod]+a[2*nod+1];
}
}
void update2(int nod, int st, int dr)
{
if(st==dr)
{
a[nod]-=val;
return;
}
else
{
int mij=(st+dr)/2;
if(poz<=mij)
update2(nod*2,st,mij);
else
update2(nod*2+1,mij+1,dr);
a[nod]=a[2*nod]+a[2*nod+1];
}
}
void query(int nod, int st, int dr)
{
if(start<=st && dr<=finish)
{
s+=a[nod];
return;
}
int mij=(st+dr)/2;
if(start<=mij)
query(nod*2,st,mij);
if(mij<finish)
query(nod*2+1,mij+1,dr);
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&val);
poz=i;
update(1,1,n);
}
for(int i=1;i<=m;i++)
{
scanf("%d",&tip);
if(tip==0)
{
scanf("%d%d",&poz,&val);
update2(1,1,n);
}
else
{
s=0;
scanf("%d%d",&start,&finish);
query(1,1,n);
printf("%d\n",s);
}
}
fclose(stdout);
return 0;
}