#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5, mod = 998244353;
template <class o>
inline void qr(o &x) {
  x = 0;
  char c = getchar();
  int f = 1;
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = x * 10 + (c ^ 48);
    c = getchar();
  }
  x *= f;
}
template <class o>
void qw(o x) {
  if (x / 10) qw(x / 10);
  putchar(x % 10 + 48);
}
template <class o>
void pr1(o x) {
  if (x < 0) putchar('-'), x = -x;
  qw(x);
  putchar(' ');
}
template <class o>
void pr2(o x) {
  if (x < 0) putchar('-'), x = -x;
  qw(x);
  puts("");
}
inline int ksm(int a, int b = mod - 2) {
  int ans = 1;
  for (; b; b >>= 1, a = 1ll * a * a % mod)
    if (b & 1) ans = 1ll * ans * a % mod;
  return ans;
}
inline int add(int a, int b) { return a += b, a >= mod ? a - mod : a; }
inline int sub(int a, int b) { return a -= b, a < 0 ? a + mod : a; }
set<pair<int, int> > C;
set<int> L[N], R[N];
struct Seg {
  int val, mnL, mxR;
} t[N << 3];
int n, m;
void update(int p) {
  t[p].mnL = min(t[p << 1].mnL, t[p << 1 | 1].mnL);
  t[p].mxR = max(t[p << 1].mxR, t[p << 1 | 1].mxR);
  t[p].val =
      (t[p << 1].mnL <= t[p << 1 | 1].mxR) | t[p << 1].val | t[p << 1 | 1].val;
}
void build(int p, int l, int r) {
  t[p].val = t[p].mxR = 0;
  t[p].mnL = m + 1;
  if (l == r) return;
  int mid = l + r >> 1;
  build(p << 1, l, mid);
  build(p << 1 | 1, mid + 1, r);
}
void modifyL(int p, int l, int r, int pos, int d) {
  if (l == r) {
    t[p].mnL = d;
    t[p].val = t[p].mnL <= t[p].mxR;
    return;
  }
  int mid = l + r >> 1;
  if (pos <= mid)
    modifyL(p << 1, l, mid, pos, d);
  else
    modifyL(p << 1 | 1, mid + 1, r, pos, d);
  update(p);
}
void modifyR(int p, int l, int r, int pos, int d) {
  if (l == r) {
    t[p].mxR = d;
    t[p].val = t[p].mnL <= t[p].mxR;
    return;
  }
  int mid = l + r >> 1;
  if (pos <= mid)
    modifyR(p << 1, l, mid, pos, d);
  else
    modifyR(p << 1 | 1, mid + 1, r, pos, d);
  update(p);
}
void solve() {
  int q;
  qr(n);
  qr(m);
  qr(q);
  for (int i = 1; i <= n; ++i) {
    L[i].insert(m + 1);
    R[i].insert(0);
  }
  build(1, 1, n);
  for (int i = 1; i <= q; ++i) {
    int x, y;
    qr(x), qr(y);
    if (C.count(make_pair(x, y))) {
      C.erase(make_pair(x, y));
      if (x & 1) {
        L[(x + 1) / 2].erase((y + 1) / 2);
        modifyL(1, 1, n, (x + 1) / 2, *L[(x + 1) / 2].begin());
      } else {
        R[x / 2].erase(y / 2);
        modifyR(1, 1, n, x / 2, *R[x / 2].rbegin());
      }
    } else {
      C.insert(make_pair(x, y));
      if (x & 1) {
        L[(x + 1) / 2].insert((y + 1) / 2);
        modifyL(1, 1, n, (x + 1) / 2, *L[(x + 1) / 2].begin());
      } else {
        R[x / 2].insert(y / 2);
        modifyR(1, 1, n, x / 2, *R[x / 2].rbegin());
      }
    }
    if (t[1].val)
      puts("No");
    else
      puts("Yes");
  }
}
int main() {
  solve();
  return 0;
}
