#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200005;
set<int> ab[MAXN][2];
int N, M, Q;
struct segTree {
  int f, t, mini, maxi;
  bool ans;
  segTree *L, *R;
  segTree(int _f, int _t) : f(_f), t(_t) {
    ans = false;
    mini = INT_MAX;
    maxi = INT_MIN;
    if (f != t) {
      L = new segTree(f, (f + t) / 2);
      R = new segTree((f + t) / 2 + 1, t);
    }
  }
  void update(int x, int v, bool flag) {
    if (f == t && t == x) {
      if (flag)
        maxi = v;
      else
        mini = v;
      ans = maxi >= mini;
      return;
    }
    if (x < R->f)
      L->update(x, v, flag);
    else
      R->update(x, v, flag);
    mini = min(R->mini, L->mini);
    maxi = max(R->maxi, L->maxi);
    ans = R->ans | L->ans | (R->maxi >= L->mini);
  }
};
int main() {
  scanf("%d %d %d", &N, &M, &Q);
  segTree *tree = new segTree(0, N + 1);
  for (int i = 0; i < Q; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    x--, y--;
    bool flag = (x & 1);
    int mult = (flag ? -1 : 1);
    if (ab[x / 2][flag].count((y / 2) * mult))
      ab[x / 2][flag].erase((y / 2) * mult);
    else
      ab[x / 2][flag].insert((y / 2) * mult);
    int val = INT_MAX;
    if (flag) val = INT_MIN;
    if (ab[x / 2][flag].size() > 0) val = abs(*ab[x / 2][flag].begin());
    tree->update(x / 2, val, flag);
    puts((!tree->ans ? "YES" : "NO"));
  }
  return 0;
}
