#include <algorithm>
#include <cctype>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <vector>

using namespace std;

#define reps(i,f,n) for(int i=f; i<int(n); ++i)
#define rep(i,n) reps(i,0,n)

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> pii;

const int INF = 1001001001;

int dist(pii a, pii b)
{
	int dy = a.first - b.first;
	int dx = a.second - b.second;
	if(0 <= dy*dx){
		dy = abs(dy);
		dx = abs(dx);
		return dy + max(0, dx - (dy+1-min(a.first,b.first)%2)/2);
	}
	else{
		dy = abs(dy);
		dx = abs(dx);
		return dy + max(0, dx - (dy + min(a.first, b.first)%2)/2);
	}
}

int main()
{
	int m, n;
	while(scanf("%d%d", &m, &n), m){
		int s;
		scanf("%d", &s);
		pii conv[10];
		rep(i, s)
			scanf("%d%d", &conv[i].second, &conv[i].first);
		
		int d[101][101];
		rep(i, n) rep(j, m){
			d[i+1][j+1] = INF;
			rep(k, s)
				d[i+1][j+1] = min(d[i+1][j+1], dist(pii(i+1, j+1), conv[k]));
		}
		
		int t, ans = 0;
		scanf("%d", &t);
		rep(i, t){
			int x, y;
			scanf("%d%d", &x, &y);
			
			int cnt = 0;
			rep(j, n) rep(k, m)
				cnt += dist(pii(j+1, k+1), pii(y, x)) < d[j+1][k+1];
			ans = max(ans, cnt);
		}
		printf("%d\n", ans);
	}
	return 0;
}