#include <bits/stdc++.h>
using namespace std;
namespace SGT {
int sumv[4000000], minn[4000000];
inline void pushup(int o) {
  sumv[o] = sumv[o * 2] + sumv[o * 2 + 1];
  minn[o] = min(minn[o * 2 + 1], minn[o * 2] + sumv[o * 2 + 1]);
}
void update(int l, int r, int o, int p, int q) {
  if (l == r) {
    sumv[o] += q;
    minn[o] = min(0, sumv[o]);
  } else {
    int m = ((l + r) >> 1);
    if (m >= p)
      update(l, m, o * 2, p, q);
    else
      update(m + 1, r, o * 2 + 1, p, q);
    pushup(o);
  }
}
int query(int l, int r, int o, int s) {
  if (l == r)
    return (s + minn[o] < 0) ? l : -1;
  else {
    int m = ((l + r) >> 1);
    if (s + minn[o * 2 + 1] < 0)
      return query(m + 1, r, o * 2 + 1, s);
    else
      return query(l, m, o * 2, s + sumv[o * 2 + 1]);
  }
}
}  // namespace SGT
int a[300005], b[300005];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    SGT::update(1, 1e6, 1, a[i], -1);
  }
  for (int i = 1; i <= m; i++) {
    scanf("%d", &b[i]);
    SGT::update(1, 1e6, 1, b[i], 1);
  }
  int k;
  scanf("%d", &k);
  for (int i = 1; i <= k; i++) {
    int kind, x, y;
    scanf("%d%d%d", &kind, &x, &y);
    if (kind == 1) {
      SGT::update(1, 1e6, 1, a[x], 1);
      a[x] = y;
      SGT::update(1, 1e6, 1, a[x], -1);
    } else {
      SGT::update(1, 1e6, 1, b[x], -1);
      b[x] = y;
      SGT::update(1, 1e6, 1, b[x], 1);
    }
    printf("%d\n", SGT::query(1, 1e6, 1, 0));
  }
  return 0;
}
