#include <cstdio>
#include <vector>
#include <cassert>
#include <algorithm>

using std::vector;
using std::min;
using std::max;

class Line {
    static const int INF = int(1e9);
    int minX, maxX, cntX; 
public:
    Line() : minX(INF), maxX(-INF), cntX(0) {
    }

    void add(int x) {
        minX = min(minX, x);
        maxX = max(maxX, x);
        cntX += 1;
    }

    bool isConnected() const {
        return cntX == 0 || maxX - minX + 1 == cntX;
    }
};

class Pond {
    vector <Line> rows;
    vector <Line> columns;
    int disconnectedLineCount;
public:
    Pond(int n, int m) {
        rows.resize(m);
        columns.resize(n);
        disconnectedLineCount = 0;
    }

    bool isConnected() const {
        return disconnectedLineCount == 0;
    }

    void addFlower(int x, int y) {
        if (!rows[x].isConnected()) {
            --disconnectedLineCount;
        }
        if (!columns[y].isConnected()) {
            --disconnectedLineCount;
        }
        
        rows[x].add(y);
        columns[y].add(x);

        if (!rows[x].isConnected()) {
            ++disconnectedLineCount;
        }
        if (!columns[y].isConnected()) {
            ++disconnectedLineCount;
        }
    }
};

void printAnswer(const Pond & pond) {
    printf("%s\n", pond.isConnected() ? "YES" : "NO");
}

int main() {
    assert(freopen("turtles.in", "r", stdin));
    assert(freopen("turtles.out", "w", stdout));

    int w, h;
    assert(scanf("%d%d", &h, &w));

    Pond pond(w, h);

    int n;
    assert(scanf("%d", &n));
    for (int i = 0; i < n; ++i) {
        int x, y;
        assert(scanf("%d%d", &x, &y));
        --x, --y;
        pond.addFlower(x, y);
    }

    printAnswer(pond);

    int q;
    assert(scanf("%d", &q));
    for (int i = 0; i < q; ++i) {
        int x, y;
        assert(scanf("%d%d", &x, &y));
        --x, --y;
        pond.addFlower(x, y);
        printAnswer(pond);
    }

    return 0;
}
