func_code_string: #include <bits/stdc++.h>   using namespace std;   mt19937 rnd(chrono::system_clock::now().time_since_epoch().count());   const int MAXN = 200100, MAXK = 25;   const long long MOD = 998244353;   int st[MAXN][MAXK];   int n, q;   int a[MAXN];   pair<int, int> lastP[MAXN];   int lg[MAXN];   void buildST() {     for (int j = (1); j <= (MAXK); j++)       for (int i = 0; i + (1 << j) <= q; i++)         st[i][j] = max(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]);   }   int getMax(int l, int r) {     int p = lg[r - l + 1];     return max(st[l][p], st[r - (1 << p) + 1][p]);   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(nullptr);     cin >> n;     for (int i = (1); i <= (n); i++) cin >> a[i];     for (int i = (1); i <= (n); i++) lastP[i] = {a[i], -1};     cin >> q;     for (int i = (2); i <= (q); i++) lg[i] = lg[i / 2] + 1;     for (int i = (0); i <= (q - 1); i++) {       int t;       cin >> t;       if (t == 1) {         int p, x;         cin >> p >> x;         lastP[p] = {x, i};       } else {         int x;         cin >> x;         st[i][0] = x;       }     }     buildST();     for (int i = (1); i <= (n); i++) {       int cur = lastP[i].first, wh = lastP[i].second;       cur = max(cur, getMax(wh + 1, q - 1));       cout << cur <<    ;     }     return 0;   }   