#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int N = 2e5;
int n, m;
map<pair<int, int>, bool> vis;
template <class cmp>
struct Heap {
  priority_queue<int, vector<int>, cmp> add, rem;
  void push(int first) { add.push(first); }
  void work() {
    while (int((rem).size()) && add.top() == rem.top()) add.pop(), rem.pop();
  }
  void erase(int first) { rem.push(first); }
  int top() {
    work();
    return add.top();
  }
  size_t size() { return int((add).size()) - int((rem).size()); }
};
struct cmp1 {
  bool operator()(int p, int q) { return p < q; }
};
struct cmp2 {
  bool operator()(int p, int q) { return p > q; }
};
Heap<cmp1> hx[N];
Heap<cmp2> hn[N];
const int T = N << 2;
int lose[T], mx[T], mn[T];
void pushup(int k) {
  mx[k] = max(mx[k << 1], mx[k << 1 | 1]);
  mn[k] = min(mn[k << 1], mn[k << 1 | 1]);
  lose[k] = lose[k << 1] | lose[k << 1 | 1] | (mx[k << 1 | 1] >= mn[k << 1]);
}
void build(int k, int l, int r) {
  if (l == r) {
    mx[k] = -1, mn[k] = m, lose[k] = 0;
    return;
  }
  int mid = (l + r) >> 1;
  build(k << 1, l, mid), build(k << 1 | 1, mid + 1, r);
  pushup(k);
}
void refresh(int first, int k, int l, int r) {
  if (l == r) {
    mx[k] = int((hx[l]).size()) ? hx[l].top() : -1;
    mn[k] = int((hn[l]).size()) ? hn[l].top() : m;
    lose[k] = (mx[k] >= mn[k]);
    return;
  }
  int mid = (l + r) >> 1;
  if (mid >= first)
    refresh(first, k << 1, l, mid);
  else
    refresh(first, k << 1 | 1, mid + 1, r);
  pushup(k);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  cin >> n >> m, build(1, 0, n - 1);
  int T;
  cin >> T;
  while (T--) {
    int first, second;
    cin >> first >> second, first--, second--;
    if (vis[make_pair(first, second)]) {
      if (first & 1)
        hx[first >> 1].erase(second >> 1);
      else
        hn[first >> 1].erase(second >> 1);
    } else {
      if (first & 1)
        hx[first >> 1].push(second >> 1);
      else
        hn[first >> 1].push(second >> 1);
    }
    vis[make_pair(first, second)] ^= 1;
    refresh(first >> 1, 1, 0, n - 1);
    cout << (lose[1] ? "NO" : "YES") << '\n';
  }
  return 0;
}
