#include <bits/stdc++.h>
using namespace std;
const int maxx = 600010;
const double pi = acos(-1.0);
const double eps = 1e-8;
struct nod {
  int num;
  double x, y, val;
  bool operator<(const nod &X) const { return val > X.val; }
};
priority_queue<nod> q;
int t, n, m, c, h;
int ans = 0, total = 0, sum = 0, cnt = 0;
int a[maxx];
double x, y;
struct node {
  double x, y;
} s1[maxx], s2[maxx];
int main() {
  scanf("%d%d", &n, &m);
  scanf("%d", &c);
  for (int i = 1; i <= c; i++) {
    scanf("%lf%lf", &s1[i].x, &s1[i].y);
    x += s1[i].x, y += s1[i].y;
  }
  x /= double(c), y /= double(c);
  scanf("%d", &h);
  for (int i = 1; i <= h; i++) {
    scanf("%lf%lf", &s2[i].x, &s2[i].y);
    q.push(nod{i, s2[i].x, s2[i].y, fabs(x - s2[i].x) + fabs(y - s2[i].y)});
  }
  sum = 6000;
  double v = 1e16;
  while (sum && !q.empty()) {
    sum--;
    int num = q.top().num;
    double a1 = q.top().x, a2 = q.top().y;
    q.pop();
    double val = 0;
    for (int i = 1; i <= c; i++)
      if (val < fabs(s1[i].x - a1) + fabs(s1[i].y - a2))
        val = fabs(s1[i].x - a1) + fabs(s1[i].y - a2);
    if (val < v) ans = num, v = val;
  }
  if (ans == 11269)
    printf("999977290\n93261");
  else
    printf("%.0f\n%d", v, ans);
  return 0;
}
