#include <bits/stdc++.h>
using namespace std;
const long long N = 1000000 + 3;
long long t[4 * N], mod[4 * N];
void push(long long v, long long l, long long r) {
  if (l == r) {
    mod[v] = 0;
    return;
  }
  t[2 * v] += mod[v];
  t[2 * v + 1] += mod[v];
  mod[2 * v] += mod[v];
  mod[2 * v + 1] += mod[v];
  t[v] = min(t[2 * v], t[2 * v + 1]);
  mod[v] = 0;
}
void upd(long long v, long long tl, long long tr, long long l, long long r,
         long long x) {
  push(v, tl, tr);
  if (tl > tr || l > r) return;
  if (tl == l && tr == r) {
    t[v] += x;
    mod[v] += x;
    return;
  }
  long long tm = (tl + tr) >> 1;
  upd(2 * v, tl, tm, l, min(r, tm), x);
  upd(2 * v + 1, tm + 1, tr, max(l, tm + 1), r, x);
  t[v] = min(t[2 * v], t[2 * v + 1]);
}
long long down(long long v, long long tl, long long tr) {
  push(v, tl, tr);
  if (tl == tr) {
    return tl;
  }
  long long tm = (tl + tr) >> 1;
  if (t[2 * v + 1] < 0)
    return down(2 * v + 1, tm + 1, tr);
  else
    return down(2 * v, tl, tm);
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n, m;
  cin >> n >> m;
  vector<long long> a(n), b(m);
  for (long long i = 0; i < n; ++i) {
    cin >> a[i];
    upd(1, 0, N - 1, 0, a[i], -1);
  }
  for (long long i = 0; i < m; ++i) {
    cin >> b[i];
    upd(1, 0, N - 1, 0, b[i], 1);
  }
  long long q;
  cin >> q;
  while (q--) {
    long long tt, i, x;
    cin >> tt >> i >> x;
    --i;
    if (tt == 1) {
      upd(1, 0, N - 1, 0, a[i], 1);
      a[i] = x;
      upd(1, 0, N - 1, 0, a[i], -1);
    } else {
      upd(1, 0, N - 1, 0, b[i], -1);
      b[i] = x;
      upd(1, 0, N - 1, 0, b[i], 1);
    }
    push(1, 0, N - 1);
    if (t[1] >= 0)
      cout << "-1\n";
    else
      cout << down(1, 0, N - 1) << '\n';
  }
}
