#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
map<int, bool> mp[N * 2];
set<int> lp[N], rd[N];
bool is[N << 2];
int mn[N << 2], mx[N << 2], n, m;
void build(int k, int l, int r) {
  mx[k] = 0;
  mn[k] = n + 1;
  is[k] = 0;
  if (l == r) return;
  int mid = l + r >> 1;
  build(k << 1, l, mid);
  build(k << 1 | 1, mid + 1, r);
}
void push_up(int k) {
  mx[k] = max(mx[k << 1], mx[k << 1 | 1]);
  mn[k] = min(mn[k << 1], mn[k << 1 | 1]);
  is[k] = (is[k << 1] || is[k << 1 | 1] || mx[k << 1 | 1] >= mn[k << 1]);
}
void upd(int k, int l, int r, int x) {
  if (l == r) {
    mn[k] = (lp[l].size() ? *lp[l].begin() : n + 1);
    mx[k] = (rd[l].size() ? *rd[l].rbegin() : 0);
    is[k] = (mx[k] >= mn[k]);
    return;
  }
  int mid = l + r >> 1;
  if (x <= mid)
    upd(k << 1, l, mid, x);
  else
    upd(k << 1 | 1, mid + 1, r, x);
  push_up(k);
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int q, x, y;
  cin >> n >> m >> q;
  build(1, 1, m);
  while (q--) {
    cin >> x >> y;
    if (mp[x][y]) {
      mp[x][y] = 0;
      y = (y + 1) / 2;
      if (x & 1)
        lp[y].erase(x / 2 + 1);
      else
        rd[y].erase(x / 2);
    } else {
      mp[x][y] = 1;
      y = (y + 1) / 2;
      if (x & 1)
        lp[y].insert(x / 2 + 1);
      else
        rd[y].insert(x / 2);
    }
    upd(1, 1, m, y);
    cout << (is[1] ? "NO" : "YES") << '\n';
  }
  return 0;
}
