#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
const int INF = 1e9 + 10;
int N, M, Q;
pair<int, int> pos[maxn];
struct max_tree {
  int tree[maxn << 2];
  int merge(int l, int r) { return max(l, r); }
  void build() {
    for (int i = 0; i < maxn; ++i) tree[i] = -INF;
  }
  void update(int l, int r, int first, int second, int id, int v) {
    if (l > r || first > second || r < first || l > second) return;
    if (l <= first && second <= r) {
      tree[id] = v;
      return;
    }
    int mid = (first + second) >> 1;
    if (r <= mid) {
      update(l, r, first, mid, id << 1, v);
    } else if (l > mid) {
      update(l, r, mid + 1, second, id << 1 | 1, v);
    } else {
      update(l, r, first, mid, id << 1, v);
      update(l, r, mid + 1, second, id << 1 | 1, v);
    }
    tree[id] = merge(tree[id << 1], tree[id << 1 | 1]);
  }
  int query(int l, int r, int first, int second, int id) {
    if (l > r || first > second || second < l || first > r) return -INF;
    if (l <= first && second <= r) {
      return tree[id];
    }
    int mid = (first + second) >> 1;
    if (r <= mid) {
      return query(l, r, first, mid, id << 1);
    }
    if (l > mid) {
      return query(l, r, mid + 1, second, id << 1 | 1);
    }
    return max(query(l, r, first, mid, id << 1),
               query(l, r, mid + 1, second, id << 1 | 1));
  }
} T;
pair<int, int> getCo(int first, int second) {
  pair<int, int> ret = make_pair((first + 1) / 2, (second + 1) / 2);
  return ret;
}
bool isL(int first, int second) { return first % 2 == 1; }
bool check(int first) {
  if (0) cout << "checking " << first << endl;
  T.build();
  for (int i = 1; i <= first; ++i) {
    if (isL(pos[i].first, pos[i].second)) continue;
    pair<int, int> pt = getCo(pos[i].first, pos[i].second);
    T.update(pt.second, pt.second, 1, M, 1, pt.first);
    if (0)
      cout << "update "
           << "y = " << pt.second << " to be " << pt.first << endl;
  }
  for (int i = 1; i <= first; ++i) {
    if (isL(pos[i].first, pos[i].second)) {
      pair<int, int> pt = getCo(pos[i].first, pos[i].second);
      if (0) cout << "checking for " << pt.first << " " << pt.second << endl;
      if (T.query(pt.second, M, 1, M, 1) >= pt.first) {
        return 1;
      }
    }
  }
  return 0;
}
int main() {
  scanf("%d %d %d", &N, &M, &Q);
  for (int i = 1; i <= Q; ++i) {
    scanf("%d %d", &pos[i].first, &pos[i].second);
  }
  int l = 1, r = Q, ans = Q + 1;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (check(mid)) {
      ans = mid;
      r = mid - 1;
    } else {
      l = mid + 1;
    }
  }
  for (int i = 1; i <= Q; ++i) {
    if (i < ans)
      printf("YES\n");
    else
      printf("NO\n");
  }
}
