#include <bits/stdc++.h>
#define left_son(x) ((x) << 1)
#define right_son(x) (((x) << 1) + 1)
using namespace std;
const int nrMax = 15000;
int n, m;
int sum_Aint[4 * nrMax + 5];
void update(int left, int right, int val, int poz, int pozfin)
{
if (left == right) {sum_Aint[poz] += val; return;}
else
{
int mij = (left + right) >> 1;
if (pozfin <= mij) update(left, mij, val, left_son(poz), pozfin);
else update(mij + 1, right, val, right_son(poz), pozfin);
sum_Aint[poz] = sum_Aint[left_son(poz)] + sum_Aint[right_son(poz)];
}
}
int querry(int left, int right, int start, int finish, int poz)
{
if (left >= start && right <= finish)
return sum_Aint[poz];
int mij = (left + right) >> 1, answer = 0;
if (mij >= start) answer += querry(left, mij, start, finish, left_son(poz));
if (mij < finish) answer += querry(mij + 1, right, start, finish, right_son(poz));
return answer;
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 1, x; i <= n; i++)
{
scanf("%d", &x);
update(1, n, x, 1, i);
}
for (int i = 1, op, a, b; i <= m; i++)
{
scanf("%d %d %d", &op, &a, &b);
if (!op)
{
b *= -1;
update(1, n, b, 1, a);
}
else
printf("%d\n", querry(1, n, a, b, 1));
}
return 0;
}