func_code_string: #include <bits/stdc++.h>   using namespace std;   const int mm = 1e6 + 1;   const int mx = 1 << 20;   const int N = 3e5 + 10;   int a[N], b[N];   int seg_t[mx * 2 + 10], tag[mx * 2 + 10];   void up(int o) { seg_t[o] = max(seg_t[o << 1], seg_t[o << 1 | 1]); }   void down(int o) {     if (tag[o] == 0) {       return;     }     seg_t[o << 1] += tag[o];     tag[o << 1] += tag[o];     seg_t[o << 1 | 1] += tag[o];     tag[o << 1 | 1] += tag[o];     tag[o] = 0;   }   void update(int o, int l, int r, int ql, int qr, int v) {     if (ql <= l && r <= qr) {       seg_t[o] += v;       tag[o] += v;       return;     }     down(o);     int mid = (l + r) / 2;     if (mid >= ql) update(o << 1, l, mid, ql, qr, v);     if (mid < qr) update(o << 1 | 1, mid + 1, r, ql, qr, v);     up(o);   }   int query(int o, int l, int r) {     if (seg_t[o] <= 0) return -1;     if (l == r) return l;     down(o);     int mid = (l + r) / 2;     if (seg_t[o << 1 | 1] > 0) {       return query(o << 1 | 1, mid + 1, r);     }     return query(o << 1, l, mid);   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0), cout.tie(0);     int n, m;     cin >> n >> m;     for (int i = 0; i < n; i++) {       cin >> a[i];       update(1, 1, mm, 1, a[i], 1);     }     for (int i = 0; i < m; i++) {       cin >> b[i];       update(1, 1, mm, 1, b[i], -1);     }     int q;     cin >> q;     while (q--) {       int opt, x, y;       cin >> opt >> x >> y;       --x;       if (opt == 1 && a[x] != y) {         update(1, 1, mm, 1, a[x], -1);         a[x] = y;         update(1, 1, mm, 1, a[x], 1);       } else if (opt == 2 && b[x] != y) {         update(1, 1, mm, 1, b[x], 1);         b[x] = y;         update(1, 1, mm, 1, b[x], -1);       }       cout << query(1, 1, mm) <<   n ;     }     return 0;   }   