#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)

int main() {
  while (true){
    int w,h,s,ans=1;
    vector<int> adx={0,0,1,1,1,-1},ady={-1,1,1,-1,0,0};
    vector<int> bdx={0,0,-1,-1,-1,1},bdy={-1,1,0,1,-1,0};
    queue<pair<pair<int,int>,int>> q;
    pair<pair<int,int>,int> v;
    cin >> w >> h;
    if (w==0 && h==0) break;
    cin >> s;
    vector<vector<int>> a(w+2,vector<int>(h+2));
    rep(i,h+2){
      rep(j,w+2){
        a.at(j).at(i)=1;
      }
    }
    for (int i=1;i<h+1;i++){
      for (int j=1;j<w+1;j++){
        a.at(j).at(i)=0;
      }
    }
    vector<int> e(s),r(s);
  rep (i,s){
    cin >> e.at(i) >> r.at(i);
  }
  int u;
  cin >> u;
  rep(i,u){
    rep(i,h+2){
      rep(j,w+2){
        a.at(j).at(i)=1;
      }
    }
    for (int i=1;i<h+1;i++){
      for (int j=1;j<w+1;j++){
        a.at(j).at(i)=0;
      }
    }
      rep (p,s){
    a.at(e.at(p)).at(r.at(p))=1;
    v.first.first=e.at(p);v.first.second=r.at(p);
    v.second=0;
    q.push(v);
  }
    int xx,yy,o=1;
    cin >> xx >> yy;
    v.first.first=xx;v.first.second=yy;v.second=1;
    a.at(xx).at(yy)=1;
    q.push(v);
    while (!q.empty()){
      int x=q.front().first.first,y=q.front().first.second,t=q.front().second;
      q.pop();
      for (int j=0;j<6;j++){
        if (y%2==0){
        if (a.at(x+adx.at(j)).at(y+ady.at(j))==0) {
          a.at(x+adx.at(j)).at(y+ady.at(j))=1;
          v.first.first=x+adx.at(j);v.first.second=y+ady.at(j);v.second=t;
          q.push(v);
          if (t==1)  o++;
        }
        }
        if (y%2==1){
        if (a.at(x+bdx.at(j)).at(y+bdy.at(j))==0) {
          a.at(x+bdx.at(j)).at(y+bdy.at(j))=1;
          v.first.first=x+bdx.at(j);v.first.second=y+bdy.at(j);v.second=t;
          q.push(v);
          if (t==1) o++;
        }
        }
      }
    }
    ans=max(ans,o);
  }
  cout << ans << endl;
  }
}
