#include<stdio.h>
long a[60000];
long op,i,m,n,dat,ziua,x,y;
void update(long nod, long st, long dr)
{
long mij;
if (st==dr)
a[nod]+=dat;
else
{
mij=(st+dr)/2;
if (ziua<=mij)
update(2*nod,st,mij);
else
update(2*nod+1,mij+1,dr);
a[nod]=a[2*nod]+a[2*nod+1];
}
}
long query(long nod, long st, long dr)
{
long mij,s;
if (x<=st && y>=dr)
return a[nod];
else
if (st<dr)
{
mij=(st+dr)/2;
s=0;
if (x<=mij)
s=s+query(nod*2,st,mij);
if (y>mij)
s=s+query(nod*2+1,mij+1,dr);
return s;
}
return 0;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%ld %ld",&n, &m);
for (ziua=1; ziua<=n; ++ziua)
{
scanf("%ld",&dat);
update(1,1,n);
}
for (i=1; i<=m; ++i)
{
scanf("%ld",&op);
if (op==1)
{
scanf("%ld %ld",&x,&y);
printf("%ld\n",query(1,1,n));
}
else
{
scanf("%ld %ld",&ziua,&dat);
dat=-dat;
update(1,1,n);
}
}
fclose(stdin); fclose(stdout);
return 0;
}