#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  long long n, m;
  cin >> n >> m;
  long long s = 1 << 21;
  vector<long long> tm((size_t)s + 1, 0), ta((size_t)s + 1, 0);
  auto propagate = [&](long long tv, long long tl, long long tr) {
    tm[tv] += ta[tv];
    if (tl != tr) {
      ta[tv * 2 + 0] += ta[tv];
      ta[tv * 2 + 1] += ta[tv];
      tm[tv] =
          min(tm[tv * 2 + 0] + ta[tv * 2 + 0], tm[tv * 2 + 1] + ta[tv * 2 + 1]);
    }
    ta[tv] = 0;
  };
  function<void(long long, long long, long long, long long, long long,
                long long)>
      add = [&](long long x, long long l, long long r, long long tv,
                long long tl, long long tr) {
        propagate(tv, tl, tr);
        if (tl >= l && tr <= r) {
          ta[tv] += x;
          propagate(tv, tl, tr);
        } else if (tl <= r && tr >= l) {
          add(x, l, r, tv * 2 + 0, tl, tl + (tr - tl) / 2);
          add(x, l, r, tv * 2 + 1, tr - (tr - tl) / 2, tr);
          propagate(tv, tl, tr);
        }
      };
  function<long long(long long, long long, long long)> query =
      [&](long long tv, long long tl, long long tr) {
        propagate(tv, tl, tr);
        if (tm[tv] < 0) {
          if (tl == tr) {
            return tl;
          } else {
            if (tm[tv * 2 + 1] + ta[tv * 2 + 1] < 0) {
              return query(tv * 2 + 1, tr - (tr - tl) / 2, tr);
            } else {
              return query(tv * 2 + 0, tl, tl + (tr - tl) / 2);
            }
          }
        } else {
          return -1LL;
        }
      };
  vector<long long> a((size_t)n);
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
    add(-1, 0, a[i], 1, 0, s / 2 - 1);
  }
  vector<long long> b((size_t)m);
  for (long long i = 0; i < m; i++) {
    cin >> b[i];
    add(1, 0, b[i], 1, 0, s / 2 - 1);
  }
  long long q;
  cin >> q;
  for (long long j = 0; j < q; j++) {
    long long t, i, x;
    cin >> t >> i >> x;
    i--;
    if (t == 1) {
      add(1, 0, a[i], 1, 0, s / 2 - 1);
      a[i] = x;
      add(-1, 0, a[i], 1, 0, s / 2 - 1);
    }
    if (t == 2) {
      add(-1, 0, b[i], 1, 0, s / 2 - 1);
      b[i] = x;
      add(1, 0, b[i], 1, 0, s / 2 - 1);
    }
    cout << query(1, 0, s / 2 - 1) << endl;
  }
  return 0;
}
