#include <bits/stdc++.h>
using namespace std;
int b[1000002 << 2], tag[1000002 << 2];
int pupil[345678], dish[345678];
void up(int idx) { b[idx] = max(b[idx << 1], b[idx << 1 | 1]); }
void down(int idx) {
  if (tag[idx]) {
    b[idx << 1] += tag[idx];
    b[idx << 1 | 1] += tag[idx];
    tag[idx << 1] += tag[idx];
    tag[idx << 1 | 1] += tag[idx];
    tag[idx] = 0;
  }
}
void update(int l, int r, int idx, int ql, int qr, int val) {
  if (ql <= l && r <= qr) {
    b[idx] += val;
    tag[idx] += val;
    return;
  }
  down(idx);
  int m = (l + r) >> 1;
  if (ql <= m) update(l, m, idx << 1, ql, qr, val);
  if (m < qr) update(m + 1, r, idx << 1 | 1, ql, qr, val);
  up(idx);
}
int find(int l, int r, int idx) {
  if (l == r) {
    if (b[idx] <= 0) return -1;
    return l;
  }
  down(idx);
  int m = (l + r) >> 1;
  if (b[idx << 1 | 1] > 0) return find(m + 1, r, idx << 1 | 1);
  return find(l, m, idx << 1);
}
int debug(int l, int r, int idx, int x) {
  if (l == r) return b[idx];
  down(idx);
  int m = (l + r) >> 1;
  if (x <= m) return debug(l, m, idx << 1, x);
  return debug(m + 1, r, idx << 1 | 1, x);
}
int main() {
  ios::sync_with_stdio();
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    cin >> dish[i];
    update(1, 1e6 + 1, 1, 1, dish[i], 1);
  }
  for (int i = 1; i <= m; i++) {
    cin >> pupil[i];
    update(1, 1e6 + 1, 1, 1, pupil[i], -1);
  }
  int q;
  cin >> q;
  while (q--) {
    int cmd;
    cin >> cmd;
    if (cmd == 1) {
      int x, v;
      cin >> x >> v;
      if (dish[x] > v)
        update(1, 1e6 + 1, 1, v + 1, dish[x], -1);
      else if (dish[x] < v)
        update(1, 1e6 + 1, 1, dish[x] + 1, v, 1);
      dish[x] = v;
    } else {
      int x, v;
      cin >> x >> v;
      if (pupil[x] > v)
        update(1, 1e6 + 1, 1, v + 1, pupil[x], 1);
      else if (pupil[x] < v)
        update(1, 1e6 + 1, 1, pupil[x] + 1, v, -1);
      pupil[x] = v;
    }
    cout << find(1, 1e6 + 1, 1) << endl;
  }
}
