/**
    F11 COMPETITION
    Problema: dame
    Runda: 3
    Echipa: Quicksilver
**/

#include <algorithm>
#include <fstream>
using namespace std;

#define INPUT "dame.in"
#define OUTPUT "dame.out"
#define x first
#define y second
#define MAX_DIM 1001
#define MAX_QUEEN_NUMBER 101

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

int nQueens, nRows, nCols, sol;
int map[MAX_DIM][MAX_DIM];
pair <int, int> queens[MAX_QUEEN_NUMBER];

/** READ **/
void read() {
    ifstream fin(INPUT);
    fin >> nRows;
    fin >> nCols;
    fin >> nQueens;
    for (int i = 0; i < nQueens; ++i) {
        fin >> queens[i].x;
        fin >> queens[i].y;
    }
    int nPawns;
    pair <int, int> pawn;
    fin >> nPawns;
    while (nPawns--) {
        fin >> pawn.x;
        fin >> pawn.y;
        map[pawn.x][pawn.y] = -1;
    }
    fin.close();
}

/** SOLVE **/
void borderMap() {
    for (int i = 0; i <= nRows + 1; ++i) {
        map[i][0] = -1;
        map[i][nCols + 1] = -1;
    }
    for (int i = 0; i <= nCols + 1; ++i) {
        map[0][i] = -1;
        map[nRows + 1][i] = -1;
    }
}

void fillMap(pair <int, int> queen) {
    map[queen.x][queen.y] = 1;
    pair <int, int> cell;
    for (int i = 0; i < 8; ++i) {
        cell.x = queen.x + dx[i];
        cell.y = queen.y + dy[i];
        while (map[cell.x][cell.y] >= 0) {
            map[cell.x][cell.y] = 1;
            cell.x += dx[i];
            cell.y += dy[i];
        }
    }
}

void solve() {
    borderMap();
    for (int i = 0; i < nQueens; ++i)
        fillMap(queens[i]);
    sol = 0;
    for (int i = 1; i <= nRows; ++i)
        for (int j = 1; j <= nCols; ++j)
            if (map[i][j] == 0)
                ++sol;
}

/** PRINT **/
void print() {
    ofstream fout(OUTPUT);
    fout << sol;
    fout.close();
}

/** MAIN **/
int main() {
    read();
    solve();
    print();
    return 0;
}
