#include <cstdio>
using namespace std;
int arb[30005];
void update (int nod, int st, int dr, int a, int sum)
{
if (st==dr)
arb[nod]+=sum;
else
{
int mid=(st+dr)/2;
if (a<=mid)
update(2*nod, st, mid, a, sum);
else
update(2*nod+1, mid+1, dr, a, sum);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
int query (int nod, int st, int dr, int a, int b)
{
int sum=0;
if (a<=st && dr<=b)
sum+=arb[nod];
else
{
int mid=(st+dr)/2;
if (a<=mid)
sum+=query(2*nod,st,mid,a,b);
if (b>mid)
sum+=query(2*nod+1,mid+1,dr,a,b);
}
return sum;
}
int main()
{
int n,m,tip,i,x,y;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=n; i++)
scanf("%d",&x), update(1,1,n,i,x);
for(i=1;i<2*n;i++) printf("%d\n",arb[i]);
for (i=1; i<=m; i++)
{
scanf("%d%d%d",&tip,&x,&y);
if (!tip)
update(1,1,n,x,-y);
else
printf("%d\n",query(1,1,n,x,y));
}
return 0;
}