#include <cstdio>
#include <cstring>
#include <queue>
#include <utility>
#include <algorithm>
using namespace std;
typedef pair<int,int> _P;
typedef pair<_P,int> P;
int color[100][100],tmp[100][100];
bool vst[100][100];
int dx0[]={0,1,0,-1,-1,-1},dy0[]={-1,0,1,1,0,-1};
int dx1[]={1,1,1,0,-1,0},dy1[]={-1,0,1,1,0,-1};
int m,n;
int coloring(int color[100][100],int x,int y) {
	memset(vst,0,sizeof(vst));
	queue<P> Q;
	Q.push(P(_P(x,y),0));
	vst[x][y]=true;
	int sum=0;
	while(!Q.empty()) {
		P p=Q.front();Q.pop();
		_P _p=p.first;
		if(color[_p.first][_p.second]<=p.second) continue;
		color[_p.first][_p.second]=p.second;
		sum++;
		int *dx,*dy;
		if(_p.second&1) dx=dx1,dy=dy1;
		else dx=dx0,dy=dy0;
		for(int i=0;i<6;i++) {
			int nx=_p.first+dx[i],ny=_p.second+dy[i];
			if(0>nx||nx>=m||0>ny||ny>=n)continue;
			if(vst[nx][ny])continue;
			vst[nx][ny]=true;
			Q.push(P(_P(nx,ny),p.second+1));
		}
	}
	return sum;
}
int main() {
	int s,t,x,y;
	while(scanf("%d",&m),m) {
		scanf("%d",&n);
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++)color[j][i]=1<<30;
		}
		scanf("%d",&s);
		for(int i=0;i<s;i++) {
			scanf("%d %d",&x,&y);
			coloring(color,x-1,y-1);
		}
		scanf("%d",&t);
		int ans=0;
		for(int i=0;i<t;i++) {
			scanf("%d %d",&x,&y);
			memcpy(tmp,color,sizeof(color));
			ans=max(ans,coloring(tmp,x-1,y-1));
		}
		printf("%d\n",ans);
	}
}