#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int N = 1e6 + 5;
int n, m, q;
int st[N << 2], add[N << 2], a[N], b[N];
void pushdown(int o) {
  if (add[o]) {
    add[o << 1] += add[o];
    add[o << 1 | 1] += add[o];
    st[o << 1] += add[o];
    st[o << 1 | 1] += add[o];
    add[o] = 0;
  }
}
void update(int o, int l, int r, int ql, int qr, int v) {
  if (ql <= l && r <= qr) {
    st[o] += v;
    add[o] += v;
    return;
  }
  int mid = l + r >> 1;
  pushdown(o);
  if (ql <= mid) update(o << 1, l, mid, ql, qr, v);
  if (qr > mid) update(o << 1 | 1, mid + 1, r, ql, qr, v);
  st[o] = max(st[o << 1], st[o << 1 | 1]);
}
int query(int o, int l, int r) {
  if (l == r) return l;
  int mid = l + r >> 1;
  pushdown(o);
  if (st[o << 1 | 1] > 0)
    return query(o << 1 | 1, mid + 1, r);
  else
    return query(o << 1, l, mid);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    update(1, 1, N - 5, 1, a[i], 1);
  }
  for (int i = 1; i <= m; i++) {
    scanf("%d", &b[i]);
    update(1, 1, N - 5, 1, b[i], -1);
  }
  scanf("%d", &q);
  while (q--) {
    int op, x, y;
    scanf("%d%d%d", &op, &x, &y);
    if (op == 1) {
      update(1, 1, N - 5, 1, a[x], -1);
      a[x] = y;
      update(1, 1, N - 5, 1, a[x], 1);
    } else {
      update(1, 1, N - 5, 1, b[x], 1);
      b[x] = y;
      update(1, 1, N - 5, 1, b[x], -1);
    }
    if (st[1] <= 0)
      puts("-1");
    else
      printf("%d\n", query(1, 1, N - 5));
  }
  return 0;
}
