#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, t[60001], v[15001];
void build(int radacina, int st, int dr){
if(st==dr)
{
t[radacina] = v[st];
return;
}
int m = (st + dr) / 2; //mijlocul
build(radacina * 2, st, m); //subarborele stang
build(radacina * 2 + 1, m + 1, dr); //subarborele drept
t[radacina] = t[radacina * 2] + t[radacina * 2 + 1];
}
int vmax(int poz, int a, int b, int st, int dr){
if(st >= a && b >= dr)
return t[poz];
int m = (st + dr) / 2, r1 = 0, r2 = 0;
if(a <= m)
r1 = vmax(2 * poz, a, b, st, m);
if(b > m)
r2 = vmax(2 * poz + 1, a, b, m + 1, dr);
return r1 + r2;
}
void update(int radacina, int a, int b, int st, int dr){
if(st == dr){
t[radacina] -= b;
return;
}
int m = (st + dr) / 2;
if(a <= m)
update(radacina * 2, a, b, st, m);
else
update(radacina * 2 + 1, a, b, m + 1, dr);
t[radacina] = t[radacina * 2] + t[radacina * 2 + 1];
}
int main()
{
fin>>n>>m;
for(int i = 1; i <= n; i ++)
fin>>v[i];
build(1, 1, n);
int c, a, b;
for(int i = 1; i <= m; i ++)
{
fin>>c>>a>>b;
if(c == 0) update(1, a, b, 1, n);
else fout<<vmax(1, a, b, 1, n)<<"\n";
}
fin.close();
fout.close();
return 0;
}