#include <cstdio>
#define Lmax 15005
using namespace std;
FILE *fin=freopen("datorii.in","r",stdin);
FILE *fout=freopen("datorii.out","w",stdout);
int n,m,a[Lmax],sum=0,A,B;
int heap[4*Lmax];
void citire()
{
scanf("%d %d\n", &n, &m);
for(int i=1;i<=n;i++)
scanf("%d ", &a[i]);
}
void build(int st, int dr, int nod)
{
if(st==dr)
{
heap[nod]=a[st];
return;
}
int mid=(st+dr)>>1;
int newnod=nod<<1;
build(st,mid,newnod);
build(mid+1,dr,newnod+1);
heap[nod]=heap[newnod]+heap[newnod+1];
}
void suma(int st, int dr, int nod)
{
if (A <= st && B >= dr)
{
sum+=heap[nod];
return ;
}
int mid = (st + dr) >>1;
int newnod=nod<<1;
if(B > mid)
suma(mid + 1 ,dr,newnod+1);
if(A <= mid)
suma(st,mid,newnod);
}
void add(int st, int dr, int nod)
{
if(st==dr)
{
heap[nod]-=B;
return;
}
int mid=(st+dr)>>1;
int newnod=nod<<1;
if(A<=mid)
add(st,mid,newnod);
else
add(mid+1,dr,newnod+1);
heap[nod]=heap[newnod]+heap[newnod+1];
}
void solve()
{
build(1,n,1);
for(int i=0;i<m;i++)
{
int c;
scanf("%d %d %d", &c, &A, &B);
if(c==1){
sum=0;
suma(1,n,1);
printf("%d\n", sum);
}
else{
add(1,n,1);
}
}
}
int main()
{
citire();
solve();
return 0;
}