#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<ll,ll> mp;
typedef pair<ll,mp> mmp;
#define inf 1e9

int dx[2][6] = { {1,1,1,0,-1,0 },{0,1,0,-1,-1,-1} };
int dy[2][6] = { {-1,0,1,-1,0,1 },{-1,0,1,-1,0,1} };

int main(){
    while(1){
	int n,m;
	cin>>m>>n;
	if(n==0)break;
	queue<mmp> q;
	vector<vector<int> > dp(m+2,vector<int>(n+2,inf) );
	vector<vector<int> > dp2(m+2,vector<int>(n+2,inf) );
	int s;
	cin>>s;
	for(int i=0;i<s;i++){
		int x,y;
		cin>>x>>y;
		dp[x][y] = 0;
		q.push(mmp(0,mp(x,y) ) );
	}
	while(!q.empty() ){
		mmp now = q.front();
		int x  = now.second.first;
		int y  = now.second.second;
		int cost = now.first;
		q.pop();
		/*if(dp[x][y] <= cost ){
			continue;
		}*/
		//dp[x][y] = cost;
		for(int i=0;i<6;i++){
			int nx = x + dx[y%2][i];
			int ny = y + dy[y%2][i];
			if(0<nx&&0<ny&&nx<=m&&ny<=n&& dp[nx][ny] > cost+1 ){
				q.push(mmp(cost+1, mp(nx,ny) ) );
				dp[nx][ny] = cost + 1;
			}
		}
	}
	/*for(int i=1;i<=n;i++){
		for(int j = 1;j<=m;j++){
			cout<<dp[i][j]<<' ';
		}
		cout<<endl;
	}*/
	int t;
	cin>>t;
	int ans = 0;
	dp2 = dp;
	for(int i=0;i<t;i++){
		int x,y;
		cin>>x>>y;
		dp = dp2;
		int tmp = 0;
		dp[x][y] = 0;
		q.push(mmp(0,mp(x,y) ) );
		while(!q.empty() ){
			mmp now = q.front();
			int x  = now.second.first;
			int y  = now.second.second;
			int cost = now.first;
			q.pop();
			/*if(dp[x][y] <= cost ){
				continue;
			}*/
			//cout<<x<<' '<<y<<' '<<cost<<' '<<dp[x][y]<<endl;
			dp[x][y] = cost;
			tmp++;
			for(int i=0;i<6;i++){
				int nx = x + dx[y%2][i];
				int ny = y + dy[y%2][i];
				if(0<nx&&0<ny&&nx<=m&&ny<=n&& dp[nx][ny] > cost+ 1  ){
					q.push(mmp(cost+1, mp(nx,ny) ) );
					dp[nx][ny] = cost + 1;
				}
			}
		}
		ans = max(ans,tmp);
	}


	cout<<ans<<endl;
	}

	return 0;
}

