#include <iostream>
#include <fstream>
using namespace std;
ifstream ka("datorii.in");
ofstream ki("datorii.out");
const int N_MAX = 15000;
int n, m, x, y, c;
int noduri[3 * N_MAX];
void modificare(int a, int b, int inc, int sf, int nod)
{
if(inc == sf)
noduri[nod] -= b;
else
{
int m = (inc + sf) / 2;
if(a <= m)
modificare(a, b, inc, m, nod * 2);
else
modificare(a, b, m + 1, sf, nod * 2 + 1);
noduri[nod] = noduri[2 * nod] + noduri[2 * nod + 1];
}
}
int cauta(int a, int b, int inc, int sf, int nod)
{
int m = (inc + sf) / 2;
if(a == inc && b == sf)
return noduri[nod];
else if(b <= m)
return cauta(a, b, inc, m, nod * 2);
else if(a > m)
return cauta(a, b, m + 1, sf, nod * 2 + 1);
else
return cauta(a, m, inc, m, nod * 2) + cauta(m + 1, b, m + 1, sf, nod * 2 + 1);
}
int main()
{
ka >> n >> m;
for(int i = 1; i <= n; i++)
{
ka >> x;
modificare(i, -x, 1, n, 1);
}
for(int i = 1; i <= m; i++)
{
ka >> c >> x >> y;
if(c == 0)
modificare(x, y, 1, n, 1);
else
ki << cauta(x, y, 1, n, 1) << '\n';
}
}