#include <bits/stdc++.h>
using namespace std;
int lowbit(int x) { return x & (-x); }
int e[200010];
map<pair<int, int>, int> m;
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;
  long long ans = 0;
} 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);
      else if (qq[arr[li]].type == 3)
        add(qq[arr[li]].y, -1);
      ++li;
    }
    if (qq[arr[ri]].type == 2) {
      int p = query(1, qq[arr[ri]].y);
      qq[arr[ri]].ans += p;
    } else if (qq[arr[ri]].type == 4) {
      int p = query(1, qq[arr[ri]].y);
      qq[arr[ri]].ans += -p;
    }
  }
  while (li <= mid) {
    if (qq[arr[li]].type == 1)
      add(qq[arr[li]].y, 1);
    else if (qq[arr[li]].type == 3)
      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);
    else if (qq[arr[li]].type == 3)
      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);
      else if (qq[arr[li]].type == 4)
        add(qq[arr[li]].y, -1);
      ++li;
    }
    if (qq[arr[ri]].type == 1) {
      int p = query(qq[arr[ri]].y, 200010 - 5);
      qq[arr[ri]].ans += p;
    } else if (qq[arr[ri]].type == 3) {
      int p = query(qq[arr[ri]].y, 200010 - 5);
      qq[arr[ri]].ans += -p;
    }
  }
  while (li <= mid) {
    if (qq[arr[li]].type == 2)
      add(qq[arr[li]].y, 1);
    else if (qq[arr[li]].type == 4)
      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);
    else if (qq[arr[li]].type == 4)
      add(qq[arr[li]].y, 1);
  }
}
int N, M, Q;
signed main() {
  cin >> N >> M >> Q;
  for (int i = 1; i <= Q; i++) {
    bool vis = 0;
    int x, y;
    scanf("%d %d", &x, &y);
    if (m[{x, y}] > 0)
      vis = 1, m[{x, y}] = 0;
    else
      vis = 0, m[{x, y}] = 1;
    x++;
    y++;
    qq[i].x = x / 2, qq[i].y = y / 2;
    if (!vis) {
      if (x % 2)
        qq[i].type = 2;
      else
        qq[i].type = 1;
    } else {
      if (x % 2)
        qq[i].type = 4;
      else
        qq[i].type = 3;
    }
  }
  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);
  long long sum = 0;
  for (int i = 1; i <= Q; i++) {
    sum += qq[i].ans;
    if (sum <= 0)
      puts("YES");
    else
      puts("NO");
  }
  return 0;
}
