#include <bits/stdc++.h>
using namespace std;
int lowbit(int x) { return x & (-x); }
int e[200010];
void add(int x, int v) {
  for (int i = x; i < 200010; i += lowbit(i)) e[i] += v;
}
int query(int l, int r) {
  int ans = 0;
  for (int i = r; i > 0; i -= lowbit(i)) ans += e[i];
  for (int i = l - 1; i > 0; i -= lowbit(i)) ans -= e[i];
  return ans;
}
struct node {
  int x, y, type, ans = 1;
} qq[200010];
int arr[200010];
bool comp1(int a, int b) {
  return (qq[a].x != qq[b].x) ? (qq[a].x < qq[b].x) : (a < b);
}
bool comp2(int a, int b) {
  return (qq[a].x != qq[b].x) ? (qq[a].x > qq[b].x) : (a < b);
}
void cdq1(int l, int r) {
  if (l >= r) return;
  int mid = (l + r) >> 1;
  cdq1(l, mid);
  cdq1(mid + 1, r);
  sort(arr + l, arr + mid + 1, comp1);
  sort(arr + mid + 1, arr + r + 1, comp1);
  int li = l, ri = mid + 1;
  for (; ri <= r; ri++) {
    while (li <= mid && qq[arr[li]].x <= qq[arr[ri]].x) {
      if (qq[arr[li]].type == 1) add(qq[arr[li]].y, 1);
      ++li;
    }
    if (qq[arr[ri]].type == 2) {
      int p = query(1, qq[arr[ri]].y);
      if (p) qq[arr[ri]].ans = 0;
    }
  }
  while (li <= mid) {
    if (qq[arr[li]].type == 1) add(qq[arr[li]].y, 1);
    ++li;
  }
  for (li = l; li <= mid; li++)
    if (qq[arr[li]].type == 1) add(qq[arr[li]].y, -1);
}
void cdq2(int l, int r) {
  if (l >= r) return;
  int mid = (l + r) >> 1;
  cdq2(l, mid);
  cdq2(mid + 1, r);
  sort(arr + l, arr + mid + 1, comp2);
  sort(arr + mid + 1, arr + r + 1, comp2);
  int li = l, ri = mid + 1;
  for (; ri <= r; ri++) {
    while (li <= mid && qq[arr[li]].x >= qq[arr[ri]].x) {
      if (qq[arr[li]].type == 2) add(qq[arr[li]].y, 1);
      ++li;
    }
    if (qq[arr[ri]].type == 1) {
      int p = query(qq[arr[ri]].y, 200010 - 5);
      if (p) qq[arr[ri]].ans = 0;
    }
  }
  while (li <= mid) {
    if (qq[arr[li]].type == 2) add(qq[arr[li]].y, 1);
    ++li;
  }
  for (li = l; li <= mid; li++)
    if (qq[arr[li]].type == 2) add(qq[arr[li]].y, -1);
}
int N, M, Q;
signed main() {
  cin >> N >> M >> Q;
  for (int i = 1; i <= Q; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    x++;
    y++;
    qq[i].x = x / 2, qq[i].y = y / 2;
    if (x % 2)
      qq[i].type = 2;
    else
      qq[i].type = 1;
  }
  for (int i = 1; i <= Q; i++) arr[i] = i;
  cdq1(1, Q);
  for (int i = 1; i <= Q; i++) arr[i] = i;
  cdq2(1, Q);
  bool flg = 1;
  for (int i = 1; i <= Q; i++) {
    if (!qq[i].ans) flg = 0;
    if (flg)
      puts("YES");
    else
      puts("NO");
  }
  return 0;
}
