#include <bits/stdc++.h>
using namespace std;
int arb[100000];
void update(int nod, int st, int dr, int i, int val)
{
if(st == dr)
{
arb[nod] -= val;
return;
}
int mij = (st + dr) / 2;
if(i <= mij) update(nod * 2, st, mij, i, val);
else update(nod * 2 + 1, mij + 1, dr, i, val);
arb[nod] = arb[nod * 2] + arb[nod * 2 + 1];
}
void query(int nod, int st, int dr, int a, int b, int &s)
{
if(a <= st && b >= dr)
{
s = s + arb[nod];
return;
}
int mij = (st + dr) / 2;
if(a <= mij) query(nod * 2, st, mij, a, b, s);
if(b > mij) query(nod * 2 + 1, mij + 1, dr, a, b, s);
}
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m, i, s, x, y, z;
f>>n>>m;
for (i = 1; i <= n; i++)
{
f>>x;
update(1, 1, n, i, -x);
}
for (i = 1; i <= m; i++)
{
f>>x>>y>>z;
if (x == 0)
{
update(1, 1, n, y, z);
}else{
s = 0;
query(1, 1, n, y, z, s);
g<<s<<"\n";
}
}
return 0;
}