#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5, inf = 0x3f3f3f3f;
int mx[N << 2], mn[N << 2], fl[N << 2];
set<int> L[N], R[N];
void upt(int p, int l, int r, int pos) {
  if (l == r) {
    if (R[l].empty())
      mx[p] = 0;
    else
      mx[p] = *--R[l].end();
    if (L[l].empty())
      mn[p] = inf;
    else
      mn[p] = *L[l].begin();
    fl[p] = (mn[p] <= mx[p]);
    return;
  }
  int mid = (l + r) >> 1;
  if (pos <= mid)
    upt(p << 1, l, mid, pos);
  else
    upt(p << 1 | 1, mid + 1, r, pos);
  fl[p] = fl[p << 1] | fl[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]);
}
map<pair<int, int>, int> mp;
void solve() {
  int n, m, q;
  cin >> n >> m >> q;
  memset(mn, 0x3f, sizeof(mn));
  while (q--) {
    int x, y;
    cin >> x >> y;
    ++x, ++y;
    if (mp[{x, y}] == 0) {
      if (y & 1)
        R[x / 2].insert(y / 2);
      else
        L[x / 2].insert(y / 2);
      mp[{x, y}] = 1;
    } else {
      if (y & 1)
        R[x / 2].erase(y / 2);
      else
        L[x / 2].erase(y / 2);
      mp[{x, y}] = 0;
    }
    upt(1, 1, n, x / 2);
    if (fl[1])
      cout << "NO\n";
    else
      cout << "YES\n";
  }
}
signed main() {
  ios::sync_with_stdio(false);
  int T;
  T = 1;
  while (T--) solve();
  return 0;
}
