#include <cstdio>
#include <iostream>
using namespace std;
int v[15050];
int arbint[60050];
int x,y;
int build(int node,int left,int right)
{
int mid;
if(left==right)
arbint[node]=v[left];
else
{
mid=(left+right)/2;
arbint[node]=build(2*node,left,mid)+build(2*node+1,mid+1,right);
}
return arbint[node];
}
void update(int node,int left,int right)
{
int mid;
arbint[node]-=y;
if(left==right)
return;
else
{
mid=(left+right)/2;
if(x<=mid)
update(2*node,left,mid);
else
update(2*node+1,mid+1,right);
}
}
int query(int node,int left,int right)
{
int mid,answer=0;
if(x<=left && right<=y)
answer=arbint[node];
else
{
mid=(left+right)/2;
if(x<=mid)
answer+=query(2*node,left,mid);
if(y>=mid+1)
answer+=query(2*node+1,mid+1,right);
}
return answer;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int m,n,i,p;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
build(1,1,n);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&p,&x,&y);
if(p==0)
update(1,1,n);
else
printf("%d\n",query(1,1,n));
}
return 0;
}