//50
#include<iostream>
#include<algorithm>

using namespace std;

int main(){
  for(int m,n;cin>>m>>n,m;){
    int s;
    cin>>s;
    int g[100][100];
    fill(g[0],g[100],1<<29);
    int sh[100][100]={};
    for(int i=1;i<=s;i++){
      int x,y;
      cin>>x>>y;
      x--;
      y--;
      sh[y][x]=i;
      g[y][x]=0;
    }
    int a=0;
    int t;
    cin>>t;
    while(t--){
      int x,y;
      cin>>x>>y;
      x--;
      y--;
      int gg[100][100];
      copy(g[0],g[n],gg[0]);
      int ss[100][100];
      copy(sh[0],sh[n],ss[0]);
      ss[y][x]=-1;
      gg[y][x]=0;
      for(int i=0;i<m*n;i++){
	for(int j=0;j<n;j++){
	  for(int k=0;k<m;k++){
	    for(int l=0;l<6;l++){
	      int dy[]={-1,0,1,1,0,-1};
	      int dx[][6]={{0,1,0,-1,-1,-1},{1,1,1,0,-1,0}};
	      int ny=j+dy[l];
	      int nx=k+dx[j%2][l];
	      if(0<=min(nx,ny)&&ny<n&&nx<m){
		int c=gg[ny][nx]+1;
		if(c<gg[j][k]){
		  gg[j][k]=c;
		  ss[j][k]=ss[ny][nx];
		}else if(c==gg[j][k]){
		  if(ss[j][k]!=ss[ny][nx]){
		    ss[j][k]=0;
		  }
		}
	      }
	    }
	  }
	}
      }
      int c=0;
      for(int i=0;i<n;i++){
	for(int j=0;j<m;j++){
	  c+=ss[i][j]==-1;
	}
      }
      a=max(c,a);
    }
    cout<<a<<endl;
  }
  return 0;
}