#include <bits/stdc++.h>
using namespace std;
long double typedef ld;
unsigned int typedef ui;
long long int typedef li;
pair<int, int> typedef pii;
pair<li, li> typedef pli;
vector<vector<int>> typedef graph;
unsigned long long int typedef ull;
const ld PI = 3.14159265359;
const int mod = 1000000007;
const li inf = 4000000000000000001ll;
inline int power(li _a, int _n) {
  li _c = 1;
  while (_n > 0) {
    if (_n % 2) _c = _c * _a % mod;
    _a = _a * _a % mod;
    _n /= 2;
  }
  return _c;
}
inline int geom(li _a, int _n) {
  if (_a == 0) return 0;
  if (_a == 1) return _n;
  return ((li)power(_a, _n) - 1) * power((_a - 1), mod - 2) % mod;
}
pli _r;
li bigmod(li _a, li _b, li _m) {
  if (_a == 0) return 0;
  if (_a % 2 == 1) return (_b + 2 * bigmod(_a / 2, _b, _m)) % _m;
  return 2 * bigmod(_a / 2, _b, _m) % _m;
}
void euklid(li _a, li _b) {
  if (_b == 1) {
    _r = make_pair(1, -_a + 1);
    return;
  }
  euklid(_b, _a % _b);
  _r = make_pair(_r.second, _r.first - _r.second * (_a / _b));
}
li kinez(li _x, li _a, li _y, li _b) {
  if (_x == _y) return _x;
  if (_a > _b) {
    swap(_a, _b);
    swap(_x, _y);
  }
  euklid(_b, _a);
  (_r.first *= (_x - _y)) %= (_a * _b);
  return (bigmod(_b, _r.first, _a * _b) + _y) % (_a * _b);
}
inline li sum(int _n) { return ((li)_n * (_n + 1)) / 2; }
inline li kv(int _n) { return ((li)_n * (_n + 1) * (2 * _n + 1)) / 6; }
int k = 1;
int l[2000004];
int r[2000004];
int val1[2000004];
int val2[2000004];
void make(int p, int ll, int rr) {
  l[p] = ll;
  r[p] = rr;
  if (p >= k) return;
  make(2 * p, ll, ll + (rr - ll) / 2);
  make(2 * p + 1, ll + (rr - ll) / 2 + 1, rr);
}
void app1(int v, int p) {
  while (p) {
    val1[p] = max(v, val1[p]);
    p /= 2;
  }
}
void app2(int v, int p) {
  while (p) {
    val2[p] = min(v, val2[p]);
    p /= 2;
  }
}
int ll, rr;
int maxi(int p) {
  if (rr < l[p]) return -mod;
  if (ll > r[p]) return -mod;
  if (ll <= l[p] && rr >= r[p]) return val1[p];
  return max(maxi(2 * p), maxi(2 * p + 1));
}
int mini(int p) {
  if (rr < l[p]) return mod;
  if (ll > r[p]) return mod;
  if (ll <= l[p] && rr >= r[p]) return val2[p];
  return min(mini(2 * p), mini(2 * p + 1));
}
int main() {
  bool okidac = false;
  int n, m, q, y, x;
  cin >> n >> m >> q;
  n *= 2;
  m *= 2;
  while (k <= n) k *= 2;
  for (int(i) = (1); (i) < (2 * k); (i)++) val2[i] = mod;
  make(1, 1, k);
  while (q--) {
    cin >> y >> x;
    if (y % 2 == 0) {
      app1(x, k + y - 1);
      ll = 1;
      rr = y;
      if (mini(1) < x) okidac = true;
    } else {
      app2(x, k + y - 1);
      ll = y;
      rr = n;
      if (maxi(1) > x) okidac = true;
    }
    if (okidac)
      cout << "NO" << endl;
    else
      cout << "YES" << endl;
  }
}
