#include <bits/stdc++.h>
using namespace std;
void debug_out() { cerr << '\n'; }
template <typename Head, typename... Tail>
void debug_out(Head H, Tail... T) {
  cerr << ' ' << H;
  debug_out(T...);
}
const int INF = 1e9;
const long long MOD = 1e9 + 7;
const int N = 2e5 + 5;
int n, m, q, MN[N << 2], MX[N << 2];
bool SEG[N << 2];
set<int> S[2][N];
void Build(int id = 1, int s = 0, int e = n) {
  SEG[id] = 1, MN[id] = INF, MX[id] = -INF;
  if (e - s < 2) return;
  Build(id << 1, s, (s + e) >> 1), Build(id << 1 ^ 1, (s + e) >> 1, e);
}
void Update(int p, int id = 1, int s = 0, int e = n) {
  if (e - s < 2) {
    MN[id] = *S[0][s].begin(), MX[id] = *S[1][s].rbegin(),
    SEG[id] = (MN[id] > MX[id]);
    return;
  }
  if (p < (s + e) >> 1)
    Update(p, id << 1, s, (s + e) >> 1);
  else
    Update(p, id << 1 ^ 1, (s + e) >> 1, e);
  MN[id] = min(MN[id << 1], MN[id << 1 ^ 1]),
  MX[id] = max(MX[id << 1], MX[id << 1 ^ 1]);
  SEG[id] = SEG[id << 1] && SEG[id << 1 ^ 1] && (MN[id << 1] > MX[id << 1 ^ 1]);
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  mt19937 Rnd(time(0));
  cin >> n >> m >> q;
  Build();
  for (int i = 0; i < n; i++) S[0][i].insert(INF), S[1][i].insert(-INF);
  while (q--) {
    int x, y;
    cin >> x >> y;
    x--, y--;
    set<int> &s = S[x & 1][x / 2];
    if (s.find(y) == s.end())
      s.insert(y);
    else
      s.erase(y);
    Update(x / 2);
    cout << (SEG[1] ? "YES" : "NO") << '\n';
  }
  return 0;
}
