#include<bits/stdc++.h>
#pragma GCC target("avx,avx2")
#include<immintrin.h>
#include<xmmintrin.h>
#include<x86intrin.h>
#include<emmintrin.h>
using namespace std;
#define addi32 _mm256_add_epi32
__m256i a[100010];
int * b = (int*)a;
inline int solve(int l, int r) {
register int ans = 0;
if ((r - l) <= 128) {
for (int i = l; i <= r; ++i)ans += b[i];
return ans;
}
register int l2 = l >> 3;
__m256i tmp = _mm256_set_epi32(0, 0, 0, 0, 0, 0, 0, 0);
ans += solve(l, ( (l & 7) ? (((l >> 3) + 1) << 3) : l ) - 1);
for (; l2 <= (r >> 3); ++l2)tmp = addi32(tmp, a[l2]);
ans += solve((l2 - 1) << 3, r);
int * temp = (int*)(&tmp);
ans += (temp[0] + temp[1] + temp[2] + temp[3]
+ temp[4] + temp[5] + temp[6] + temp[7]);
return ans;
}
int main() {
int n, m;
scanf("%d%d", &n, &m);
for (register int i(0); i < n; ++i)scanf("%d", b + i);
while (m--) {
int opt;
scanf("%d", &opt);
int x, k;
scanf("%d%d", &x, &k);
--x;
if (opt == 1) {
b[x] += k;
} else printf("%d\n", solve(x, k - 1));
}
return 0;
}