#include <iostream>
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int v[300000], u[300000];
void build(int s, int d, int i, int & c)
{
if(s == d)
{
v[i] = u[s];
}
else
{
int mij = (s + d)/2;
build(s, mij, i * 2, c);
build(mij + 1, d, i * 2 + 1, c);
v[i] = v[i * 2] + v[i * 2 + 1];
}
c ++;
}
void upd(int a, int b, int s, int d, int i)
{
if(s == d)
{
v[i] = v[i] - b;
}
else
{
int mij = (s + d)/ 2;
if(a <= mij)
upd(a, b, s, mij, i * 2);
else
upd(a, b, mij + 1, d, i * 2 + 1);
v[i] = v[i * 2] + v[i * 2 + 1];
}
}
int que(int s, int d, int i, int x, int y)
{
if(x <= s && y >= d)
return v[i];
else
{
int ans1 = 0, ans2 = 0;
int mij = (s + d)/2;
if(x <= mij)
ans1 = que(s, mij, i * 2, x, y);
if(y > mij)
ans2 = que(mij + 1, d, i * 2 + 1, x, y);
return ans1 + ans2;
}
}
int main()
{
int n, m, c = 0, t, a, b;
in >> n >> m;
for(int i = 1; i <= n; i ++)
{
in >> u[i];
}
build(1, n, 1, c);
for(int i = 1; i <= m; i ++ )
{
in >> t >> a >> b;
if( t == 1 )
{
out << que(1, n, 1, a, b) << '\n';
}
else
upd(a, b, 1, n, 1);
}
return 0;
}