#include <bits/stdc++.h>
#pragma comment(linker, "/stack:102400000,102400000")
using namespace std;
int lowbit(int x) { return (x & -x); }
bool isdig(char ch) { return ch >= '0' && ch <= '9'; }
bool isup(char ch) { return ch >= 'A' && ch <= 'Z'; }
bool islow(char ch) { return ch >= 'a' && ch <= 'z'; }
template <class T_>
T_ f_abs(T_ x) {
  return x < 0 ? -x : x;
}
template <class T_>
T_ f_max(T_ a, T_ b) {
  return a > b ? a : b;
}
template <class T_>
T_ f_min(T_ a, T_ b) {
  return a < b ? a : b;
}
template <class T_>
T_ gcd(T_ a, T_ b) {
  while (T_ t = a % b) a = b, b = t;
  return b;
}
template <class T_>
void f_swap(T_ &a, T_ &b) {
  T_ t = a;
  a = b;
  b = t;
}
const double eps = 1e-9;
const int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1};
const int inf = 0x7fffffff;
const int mod = 1000000007;
const int N = 100003;
int n, m, h, a, b, c, d;
void init() {
  a = b = -inf;
  c = d = inf;
}
void get_data() {
  int x, y;
  scanf("%d", &h);
  while (h--) {
    scanf("%d%d", &x, &y);
    a = f_max(a, x + y);
    b = f_max(b, y - x);
    c = f_min(c, x + y);
    d = f_min(d, y - x);
  }
  scanf("%d", &h);
}
void solve() {
  int i, x, y, ans = inf, loc, tmp;
  for (i = 1; i <= h; ++i) {
    scanf("%d%d", &x, &y);
    tmp = f_max(f_max(a - (x + y), b - (y - x)), f_max((x + y) - c, y - x - d));
    if (tmp < ans) {
      loc = i;
      ans = tmp;
    }
  }
  printf("%d\n%d\n", ans, loc);
}
int main() {
  while (~scanf("%d%d", &n, &m)) {
    init();
    get_data();
    solve();
  }
  return 0;
}
