#include<queue>
#include<algorithm>
#include<iostream>
#include<string>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
  int i,j,k;
  int w,h;
  while(cin>>w&&w){
    int n;
    cin>>h>>n;
    int sx[20],sy[20];
    for(i=0;i<n;i++){
      cin>>sx[i]>>sy[i];
      sx[i]--;
      sy[i]--;
    }
    int m;
    cin>>m;
    for(;i<n+m;i++){
      cin>>sx[i]>>sy[i];
      sx[i]--;
      sy[i]--;
    }
    unsigned a[100][100][20];
    memset(a,-1,sizeof(a));
    for(i=0;i<n+m;i++){
      queue<pair<pair<int,int>,int> > b;
      b.push(make_pair(make_pair(sx[i],sy[i]),0));
      while(b.empty()==0){
	int x,y,z;
	x=b.front().first.first;
	y=b.front().first.second;
	z=b.front().second;
	b.pop();
	if(0<=x&&x<w&&0<=y&&y<h&&a[x][y][i]>(unsigned)z){
	  a[x][y][i]=z;
	  b.push(make_pair(make_pair(x-1,y),z+1));
	  b.push(make_pair(make_pair(x+1,y),z+1));
	  if(y%2){
	    b.push(make_pair(make_pair(x+1,y+1),z+1));
	    b.push(make_pair(make_pair(x,y+1),z+1));
	    b.push(make_pair(make_pair(x+1,y-1),z+1));
	    b.push(make_pair(make_pair(x,y-1),z+1));
	  }else{
	    b.push(make_pair(make_pair(x-1,y+1),z+1));
	    b.push(make_pair(make_pair(x,y+1),z+1));
	    b.push(make_pair(make_pair(x-1,y-1),z+1));
	    b.push(make_pair(make_pair(x,y-1),z+1));
	  }
	}
      }
    }
    unsigned c[100][100];
    memset(c,-1,sizeof(c));
    for(i=0;i<h;i++){
      for(j=0;j<w;j++){
	for(k=0;k<n;k++)
	  c[j][i]=min(c[j][i],a[j][i][k]);
      }
    }
    int mx=0;
    for(i=n;i<n+m;i++){
      int ct=0;
      for(j=0;j<h;j++){
	for(k=0;k<w;k++){
	  if(a[k][j][i]<c[k][j])
	    ct++;
	}
      }
      mx=max(mx,ct);
    }
    cout<<mx<<endl;
  }
  return 0;
}