#include <bits/stdc++.h>
using namespace std;
const int N = 200020, inf = 1.01e9;
int n, m, q;
set<int> A[N], B[N];
int mina[N << 2], maxb[N << 2];
bool ans[N << 2];
void pushup(int x) {
  mina[x] = min(mina[x << 1], mina[x << 1 | 1]);
  maxb[x] = max(maxb[x << 1], maxb[x << 1 | 1]);
  ans[x] = ans[x << 1] | ans[x << 1 | 1] | (mina[x << 1] <= maxb[x << 1 | 1]);
}
void growleaf(int pos, int x) {
  mina[x] = A[pos].empty() ? inf : *A[pos].begin();
  maxb[x] = B[pos].empty() ? -inf : *B[pos].rbegin();
  ans[x] = (mina[x] <= maxb[x]);
}
void update(int pos) {
  int x = 1, l = 1, r = n, mid;
  while (l < r) {
    mid = (l + r) >> 1;
    if (pos <= mid)
      x = x << 1, r = mid;
    else
      x = x << 1 | 1, l = mid + 1;
  }
  growleaf(pos, x);
  for (x >>= 1; x; x >>= 1) pushup(x);
}
void modify(set<int> &st, int x) {
  set<int>::iterator it = st.find(x);
  if (it == st.end())
    st.insert(x);
  else
    st.erase(it);
}
void work(int x, int y) {
  (y & 1) ? modify(A[(((x) + 1) >> 1)], (((y) + 1) >> 1))
          : modify(B[(((x) + 1) >> 1)], (((y) + 1) >> 1));
  update((((x) + 1) >> 1));
}
int main() {
  scanf("%d %d %d", &n, &m, &q);
  for (int i = 1; i <= n; ++i) update(i);
  while (q--) {
    int x, y;
    scanf("%d %d", &x, &y);
    work(x, y);
    puts(ans[1] ? "NO" : "YES");
  }
}
