#include <bits/stdc++.h>
using namespace std;
struct SegTree {
  int size;
  vector<long long> seg;
  SegTree() {}
  SegTree(int size) {
    this->size = size;
    seg.resize(1 << (size + 1));
  }
  void init() {
    for (int i = 0; i < (1 << (size + 1)); i++) seg[i] = 1e18;
  }
  void update(int i, long long val) {
    i += (1 << size);
    seg[i] = val;
    while (i > 1) {
      i /= 2;
      seg[i] = min(seg[i * 2], seg[i * 2 + 1]);
    }
  }
  long long query(int a, int b, int k, int l, int r) {
    if (b < l || r < a) return 1e18;
    if (a <= l && r <= b) return seg[k];
    long long lval = query(a, b, k * 2, l, (l + r) / 2);
    long long rval = query(a, b, k * 2 + 1, (l + r) / 2 + 1, r);
    return min(lval, rval);
  }
  long long query(int a, int b) { return query(a, b, 1, 0, (1 << size) - 1); }
};
struct SegTree2 {
  int size;
  vector<long long> seg;
  SegTree2() {}
  SegTree2(int size) {
    this->size = size;
    seg.resize(1 << (size + 1));
  }
  void init() {
    for (int i = 0; i < (1 << (size + 1)); i++) seg[i] = -1e18;
  }
  void update(int i, long long val) {
    i += (1 << size);
    seg[i] = val;
    while (i > 1) {
      i /= 2;
      seg[i] = max(seg[i * 2], seg[i * 2 + 1]);
    }
  }
  long long query(int a, int b, int k, int l, int r) {
    if (b < l || r < a) return -1e18;
    if (a <= l && r <= b) return seg[k];
    long long lval = query(a, b, k * 2, l, (l + r) / 2);
    long long rval = query(a, b, k * 2 + 1, (l + r) / 2 + 1, r);
    return max(lval, rval);
  }
  long long query(int a, int b) { return query(a, b, 1, 0, (1 << size) - 1); }
};
long long h, w, Q;
long long x[200005], y[200005];
SegTree seg(18);
SegTree2 seg2(18);
set<pair<long long, long long> > S;
int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> h >> w >> Q;
  seg.init(), seg2.init();
  bool flag = true;
  for (long long(i) = (1); (i) <= (Q); (i)++) {
    cin >> y[i] >> x[i], x[i]--, y[i]--;
    if (S.count(pair<long long, long long>(x[i] / 2, y[i] / 2))) flag = false;
    long long b = x[i] % 2;
    if (b == 1) {
      if (seg.query(0, x[i] / 2) <= y[i] / 2) flag = false;
      seg2.update(x[i] / 2, max(seg2.query(x[i] / 2, x[i] / 2), y[i] / 2));
    } else {
      if (seg2.query(x[i] / 2, w - 1) >= y[i] / 2) flag = false;
      seg.update(x[i] / 2, min(seg.query(x[i] / 2, x[i] / 2), y[i] / 2));
    }
    S.insert(pair<long long, long long>(x[i] / 2, y[i] / 2));
    if (flag)
      cout << "YES"
           << "\n";
    else
      cout << "NO"
           << "\n";
  }
  flush(cout);
  return 0;
}
