#include <iostream>
#include <sstream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <bitset>
#include <numeric>
#include <climits>
#include <cfloat>
using namespace std;

int hexDist(int y1, int x1, int y2, int x2)
{
    if(y1 > y2){
        swap(y1, y2);
        swap(x1, x2);
    }

    int x3 = x1 - (y2 - y1) / 2;
    int x4 = x1 + (y2 - y1) / 2;
    if((y2 - y1) % 2 == 1){
        if(y1 % 2 == 0)
            -- x3;
        else
            ++ x4;
    }

    if(x2 < x3)
        return (y2 - y1) + (x3 - x2);
    if(x2 > x4)
        return (y2 - y1) + (x2 - x4);
    return y2 - y1;
}

int main()
{
    for(;;){
        int m, n, s;
        cin >> m >> n >> s;
        if(m == 0)
            return 0;

        vector<vector<int> > dist(n, vector<int>(m, INT_MAX));
        for(int i=0; i<s; ++i){
            int x, y;
            cin >> x >> y;

            for(int j=0; j<n; ++j){
                for(int k=0; k<m; ++k){
                    dist[j][k] = min(dist[j][k], hexDist(j, k, y-1, x-1));
                }
            }
        }

        int t;
        cin >> t;

        int ret = 0;
        for(int i=0; i<t; ++i){
            int x, y;
            cin >> x >> y;

            int num = 0;
            for(int j=0; j<n; ++j){
                for(int k=0; k<m; ++k){
                    if(hexDist(j, k, y-1, x-1) < dist[j][k])
                        ++ num;
                }
            }
            ret = max(ret, num);
        }

        cout << ret << endl;
    }
}