#include #include #include using namespace std; using namespace atcoder; using ll = boost::multiprecision::cpp_int; ll op(ll a, ll b) { return max(a, b); } ll e() { return 0; } int main() { int N, Q; cin >> N >> Q; vector A(N); for (int i = 0; i < N; i++) { string A_; cin >> A_; A[i] = ll(A_); } segtree seg(A); while (Q--) { int t; cin >> t; if (t == 1) { int p; string x; cin >> p >> x; p--; seg.set(p, seg.get(p) + ll(x)); } else { int l, r; cin >> l >> r; cout << seg.prod(l - 1, r).str() << '\n'; } } }