#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, m;
int a[N], b[N];
int mx[N << 2], add[N << 2];
void pushUp(int rt) { mx[rt] = max(mx[rt << 1], mx[rt << 1 | 1]); }
void pushDown(int rt) {
  if (add[rt]) {
    add[rt << 1 | 1] += add[rt];
    add[rt << 1] += add[rt];
    mx[rt << 1] += add[rt];
    mx[rt << 1 | 1] += add[rt];
    add[rt] = 0;
  }
}
void update(int L, int R, int val, int l, int r, int rt) {
  if (L <= l && r <= R) {
    mx[rt] += val;
    add[rt] += val;
    return;
  }
  int mid = (l + r) >> 1;
  pushDown(rt);
  if (L <= mid) update(L, R, val, l, mid, rt << 1);
  if (R > mid) update(L, R, val, mid + 1, r, rt << 1 | 1);
  pushUp(rt);
}
int qr(int l, int r, int rt) {
  if (l == r) return l;
  pushDown(rt);
  int mid = (l + r) >> 1;
  int ans = -1;
  if (mx[rt << 1 | 1] > 0) {
    ans = qr(mid + 1, r, rt << 1 | 1);
  } else if (mx[rt << 1] > 0) {
    ans = qr(l, mid, rt << 1);
  }
  pushUp(rt);
  return ans;
}
int main() {
  scanf("%d%d", &n, &m);
  int len = 1e6 + 3;
  for (int i = (1); i < (n + 1); i++) {
    scanf("%d", &a[i]);
    update(1, a[i], 1, 1, len, 1);
  }
  for (int i = (1); i < (m + 1); i++) {
    scanf("%d", &b[i]);
    update(1, b[i], -1, 1, len, 1);
  }
  int q, op, x, y;
  scanf("%d", &q);
  while (q--) {
    scanf("%d%d%d", &op, &x, &y);
    if (op == 1) {
      update(1, a[x], -1, 1, len, 1);
      a[x] = y;
      update(1, a[x], 1, 1, len, 1);
    } else {
      update(1, b[x], 1, 1, len, 1);
      b[x] = y;
      update(1, b[x], -1, 1, len, 1);
    }
    int ans = qr(1, len, 1);
    if (ans <= 0)
      printf("-1\n");
    else
      printf("%d\n", ans);
  }
  return 0;
}
