func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAX = 1e5 + 5;   int n, m;   long long t[MAX << 2], tag[MAX << 2];   int sz = 1;   inline void Period(int k, int l, int r, int a, int b, long long x) {     if (a > r || b < l) return;     if (a >= l && b <= r) {       tag[k] = t[k] = x;       return;     }     Period(k << 1, l, r, a, (a + b) >> 1, x);     Period((k << 1) + 1, l, r, ((a + b) >> 1) + 1, b, x);     t[k] = max(t[k << 1], t[(k << 1) + 1]);   }   inline long long Query(int k, int l, int r, int a, int b) {     if (tag[k]) {       t[k] = tag[k];       tag[k << 1] = max(tag[k << 1], tag[k]);       tag[(k << 1) + 1] = max(tag[(k << 1) + 1], tag[k]);       tag[k] = 0;     }     if (a > r || b < l) return 0;     if (a >= l && b <= r) return t[k];     return max(Query(k << 1, l, r, a, (a + b) >> 1),                Query((k << 1) + 1, l, r, ((a + b) >> 1) + 1, b));   }   int main() {     ios::sync_with_stdio(false);     cin >> n;     while (sz < n) sz <<= 1;     for (int i = 1; i <= n; i++) {       long long x;       cin >> x;       Period(1, i, i, 1, sz, x);     }     cin >> m;     while (m--) {       int x;       long long h;       cin >> x >> h;       long long res = Query(1, 1, x, 1, sz);       cout << res << endl;       Period(1, 1, x, 1, sz, res + h);     }     return 0;   }   