#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void ckmax(T& x, T y) {
  x = (y > x ? y : x);
}
template <typename T>
inline void ckmin(T& x, T y) {
  x = (y < x ? y : x);
}
const int MAXN = 2e5;
int n, m, q, inf;
map<pair<int, int>, bool> mp;
set<int> s0[MAXN + 5], s1[MAXN + 5];
struct SegmentTree {
  int mn[MAXN * 4 + 5], mx[MAXN * 4 + 5];
  bool ans[MAXN * 4 + 5];
  void push_up(int p) {
    ans[p] = (ans[p << 1] || ans[p << 1 | 1] || mn[p << 1] <= mx[p << 1 | 1]);
    mn[p] = min(mn[p << 1], mn[p << 1 | 1]);
    mx[p] = max(mx[p << 1], mx[p << 1 | 1]);
  }
  void build(int p, int l, int r) {
    if (l == r) {
      mx[p] = 0;
      mn[p] = inf;
      return;
    }
    int mid = (l + r) >> 1;
    build(p << 1, l, mid);
    build(p << 1 | 1, mid + 1, r);
    push_up(p);
  }
  void modify_min(int p, int l, int r, int pos, int v) {
    if (l == r) {
      mn[p] = v;
      ans[p] = (mn[p] <= mx[p]);
      return;
    }
    int mid = (l + r) >> 1;
    if (pos <= mid)
      modify_min(p << 1, l, mid, pos, v);
    else
      modify_min(p << 1 | 1, mid + 1, r, pos, v);
    push_up(p);
  }
  void modify_max(int p, int l, int r, int pos, int v) {
    if (l == r) {
      mx[p] = v;
      ans[p] = (mn[p] <= mx[p]);
      return;
    }
    int mid = (l + r) >> 1;
    if (pos <= mid)
      modify_max(p << 1, l, mid, pos, v);
    else
      modify_max(p << 1 | 1, mid + 1, r, pos, v);
    push_up(p);
  }
  SegmentTree() {}
} T;
int main() {
  cin >> n >> m >> q;
  inf = n * 2 + 1;
  T.build(1, 1, m);
  for (int tq = 1; tq <= q; ++tq) {
    int x, y;
    cin >> x >> y;
    bool flag = x % 2;
    if (mp[make_pair(x, y)]) {
      mp[make_pair(x, y)] = 0;
      x = (x + 1) / 2;
      y = (y + 1) / 2;
      if (flag == 1) {
        s1[y].erase(x);
        int v = (s1[y].empty() ? inf : *s1[y].begin());
        T.modify_min(1, 1, m, y, v);
      } else {
        s0[y].erase(x);
        int v = (s0[y].empty() ? 0 : *s0[y].rbegin());
        T.modify_max(1, 1, m, y, v);
      }
    } else {
      mp[make_pair(x, y)] = 1;
      x = (x + 1) / 2;
      y = (y + 1) / 2;
      if (flag == 1) {
        s1[y].insert(x);
        T.modify_min(1, 1, m, y, *s1[y].begin());
      } else {
        s0[y].insert(x);
        T.modify_max(1, 1, m, y, *s0[y].rbegin());
      }
    }
    if (T.ans[1])
      cout << "NO" << endl;
    else
      cout << "YES" << endl;
  }
  return 0;
}
