#include<bits/stdc++.h>
using i64 = long long;
#ifdef usetemplate
template <class T>
T quick_power(T a, T b, auto mod) {
if (b == 0) return 1 % mod;
T kt = quick_power(a, b >> 1, mod);
kt = kt * kt % mod;
if (b & 1) kt = kt * a % mod;
return kt;
}
template <class T>
T mul(T a, T b, auto mod) {
if (b == 0) return 0;
T kt = mul(a, b >> 1, mod);
kt = (kt + kt) % mod;
if (b & 1) kt = (kt + a) % mod;
return kt;
}
#endif
constexpr int N = 5e5+1;
std::array<int,N*4> f;
std::array<int, N> a;
int n, m;
inline void buildtree(int k, int l, int r) {
if (l == r) {
f[k] = a[l];
return;
}
int m = (l + r) >> 1;
buildtree(k + k, l, m);
buildtree(k + k + 1, m + 1, r);
f[k] = f[k + k] + f[k + k + 1];
}
inline void add(int k, int l, int r, int x, int y) {
f[k] += y;
if (l == r) return;
int m = (l + r) >> 1;
if (x <= m) add(k + k, l, m, x, y); else add(k + k + 1, m + 1, r, x, y);
}
inline int calc(int k, int l, int r, int s, int t) {
if (l == s and r == t) return f[k];
int m = (l + r) >> 1;
if (t <= m) return calc(k + k, l, m, s, t);
else if (s > m) return calc(k + k + 1, m + 1, r, s, t);
else return calc(k + k, l, m, s, m) + calc(k + k + 1, m + 1, r, m + 1, t);
}
signed main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
std::cin >> n >> m;
for (int i = 1; i <= n; ++i) std::cin >> a[i];
buildtree(1, 1, n);
int t, x, y;
for (int i = 1; i <= m; ++i) {
std::cin >> t >> x >> y;
if (t == 1) add(1, 1, n, x, y);
else std::cout << calc(1, 1, n, x, y) << '\n';
}
return 0;
}