#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#define nMax 100001
using namespace std;
int i,k,v[50005];
int j,a,b,c,x,y,d;
int val,n,m,maxi;
int in[15001],suma;
void update(int st,int dr,int nod)
{
if(st == dr)
{
v[nod]-=b;
return;
}
int mij = (st+dr)/2;
if(a>mij)
update(mij+1, dr, (nod<<1)+1);
else
update(st, mij, (nod<<1));
v[nod]=v[nod<<1]+v[(nod<<1)+1];
}
void build(int st,int dr,int nod)
{
if(st==dr)
{
v[nod]=in[st];
return;
}
int mij=(st+dr)/2;
build(st,mij,nod<<1);
build(mij+1,dr,nod*2+1);
v[nod]=v[nod*2]+v[nod*2+1];
}
void cherry(int st,int dr,int nod)
{
if(st>=a && dr<=b)
{
suma+=v[nod];
return;
}
if(st>b||dr<a) return;
int mij=(st+dr)/2;
cherry(st,mij,nod<<1);
cherry(mij+1,dr,nod*2+1);
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for(int i=1;i<=n;++i)
scanf("%d ", &in[i]);
build(1, n, 1);
scanf("\n");
for(int i=1;i<=m;++i)
{
int p;
scanf("%d %d %d\n", &p, &a, &b);
if(p == 0)
update(1,n,1);
else
{
suma = 0;
cherry(1,n,1);
printf("%d\n", suma);
}
}
return 0;
}