#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
const int N = (int)1e6 + 7, mod = 1000000007, M = 2e9;
int n, q, k, u, v;
vector<int> x[N], dis;
bool frq[N];
stack<int> tmp, f;
bool cmp(int i, int j) { return x[i].back() < x[j].back(); }
int calc(int v) {
  tmp.push(dis.back());
  dis.pop_back();
  while (dis.size()) {
    if (frq[dis.back()]) {
      return x[v][lower_bound(x[v].begin(), x[v].end(), x[dis.back()].back()) -
                  x[v].begin()];
    } else {
      tmp.push(dis.back());
      dis.pop_back();
    }
  }
  return x[v][0];
}
void ret(int v) {
  int t;
  if (!v)
    printf("0 0\n");
  else
    printf("%d %d\n", v, calc(v));
  while (tmp.size()) {
    t = tmp.top();
    dis.push_back(t);
    tmp.pop();
    frq[t] = 1;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &u, &v);
    x[u].push_back(v);
    if (!frq[u]) frq[u] = 1, dis.push_back(u);
  }
  sort(dis.begin(), dis.end(), cmp);
  scanf("%d", &q);
  while (q--) {
    scanf("%d", &u);
    while (u--) {
      scanf("%d", &v);
      frq[v] = 0;
      f.push(v);
    }
    while (dis.size()) {
      if (frq[dis.back()]) {
        ret(dis.back());
        break;
      } else {
        tmp.push(dis.back());
        dis.pop_back();
      }
    }
    if (!dis.size()) ret(0);
    while (f.size()) {
      frq[f.top()] = 1;
      f.pop();
    }
  }
  return 0;
}
