#include <bits/stdc++.h>
#pragma GCC optimize(2)
namespace __temp_inbuilt {
int read(void) {
  int res = 0, sign = 1;
  char ch = std::getchar();
  while (!std::isdigit(ch)) {
    if (ch == '-') sign = -1;
    ch = std::getchar();
  }
  while (std::isdigit(ch)) res = res * 10 + ch - 48, ch = std::getchar();
  return sign * res;
}
template <class Tp>
void write(const Tp &x) {
  if (x > 9) write(x / 10);
  std::putchar(x % 10 + 48);
}
}  // namespace __temp_inbuilt
using __temp_inbuilt::read;
template <class Tp>
void writeln(const Tp &x) {
  if (x < 0) std::putchar('-'), x = -x;
  __temp_inbuilt::write(x);
  std::putchar('\n');
}
template <class Tp>
void writesp(const Tp &x) {
  if (x < 0) std::putchar('-'), x = -x;
  __temp_inbuilt::write(x);
  std::putchar(' ');
}
template <class Tp>
void write(const Tp &x) {
  if (x < 0) std::putchar('-'), x = -x;
  __temp_inbuilt::write(x);
}
const double PI = 3.1415926535898, E = 2.71828182845904;
namespace contest {
const int MAXN = 2e5 + 19;
std::set<int> LS[MAXN << 1], RS[MAXN << 1];
int n, m, q;
struct Node {
  bool nota;
  int max, min;
} tr[MAXN << 2];
void push_up(int node) {
  tr[node].max = std::max(tr[node << 1].max, tr[node << 1 | 1].max);
  tr[node].min = std::min(tr[node << 1].min, tr[node << 1 | 1].min);
  tr[node].nota = tr[node << 1].nota || tr[node << 1 | 1].nota ||
                  (tr[node << 1].min <= tr[node << 1 | 1].max);
}
void build(int node, int L, int R) {
  if (L == R) {
    tr[node].max = -0x3f3f3f3f;
    tr[node].min = +0x3f3f3f3f;
    tr[node].nota = 0;
    return;
  }
  int mid = (L + R) >> 1;
  build(node << 1, L, mid);
  build(node << 1 | 1, mid + 1, R);
  push_up(node);
}
void modify(int node, int L, int R, int x) {
  if (L == R) {
    tr[node].max = LS[L].empty() ? -0x3f3f3f3f : *--LS[L].end();
    tr[node].min = RS[L].empty() ? +0x3f3f3f3f : *RS[L].begin();
    tr[node].nota = tr[node].max >= tr[node].min;
    return;
  }
  int mid = (L + R) >> 1;
  if (x <= mid)
    modify(node << 1, L, mid, x);
  else
    modify(node << 1 | 1, mid + 1, R, x);
  push_up(node);
}
int main() {
  n = read(), m = read(), q = read();
  for (int i = 1; i <= n; ++i) LS[i].clear(), RS[i].clear();
  build(1, 1, n);
  while (q--) {
    int x = read(), y = read();
    if (x & 1) {
      if (RS[(x + 1) / 2].find((y + 1) / 2) == RS[(x + 1) / 2].end())
        RS[(x + 1) / 2].insert((y + 1) / 2);
      else
        RS[(x + 1) / 2].erase((y + 1) / 2);
    } else {
      if (LS[(x + 1) / 2].find((y + 1) / 2) == LS[(x + 1) / 2].end())
        LS[(x + 1) / 2].insert((y + 1) / 2);
      else
        LS[(x + 1) / 2].erase((y + 1) / 2);
    }
    modify(1, 1, n, (x + 1) / 2);
    std::puts(tr[1].nota ? "NO" : "YES");
  }
  return 0;
}
}  // namespace contest
int main() {
  contest::main();
  return 0;
}
