3 3 20
4 4
2 4
2 2
2 2
2 2
5 5
2 2
2 2
2 2
5 5
5 5
3 5
4 2
2 2
5 5
5 5
3 5
5 5
2 2
3 3
 1 10 10
1 19
2 12
2 8
2 16
2 2
2 4
1 9
2 18
2 14
2 10
 10 10 10
2 6
17 7
5 19
14 14
10 10
16 2
6 10
7 17
18 2
17 1
 10 10 10
12 10
8 4
10 8
15 13
11 11
8 6
9 19
13 19
6 4
19 19
 3 3 20
5 5
6 6
6 6
6 2
6 4
6 6
6 6
5 3
5 5
6 4
6 2
5 1
5 1
6 6
6 6
6 2
5 5
6 4
5 3
6 4
 3 3 20
1 1
4 4
1 1
4 4
3 3
1 1
3 1
6 6
1 1
4 6
3 1
3 3
6 4
3 1
6 6
4 6
3 1
4 6
4 6
5 1
 1 10 10
2 10
1 9
2 12
2 18
2 4
2 8
2 20
2 2
2 6
2 14
 10 10 10
2 10
4 6
1 19
7 15
20 18
3 19
11 17
9 17
16 2
19 15
 3 1 20
3 1
1 1
3 1
4 2
4 2
6 2
1 1
5 1
5 1
2 2
4 2
2 2
6 2
4 2
4 2
2 2
1 1
6 2
2 2
6 2
 10 10 10
10 12
19 7
14 12
10 10
8 6
19 19
18 2
12 2
16 4
16 2
 1 1 100
2 2
2 2
1 1
2 2
2 2
1 1
1 1
1 1
2 2
2 2
2 2
1 1
1 1
1 1
1 1
1 1
2 2
1 1
2 2
1 1
2 2
1 1
2 2
2 2
1 1
2 2
1 1
2 2
2 2
2 2
1 1
1 1
2 2
1 1
2 2
2 2
1 1
2 2
1 1
1 1
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
1 1
2 2
2 2
1 1
1 1
1 1
2 2
1 1
2 2
1 1
2 2
1 1
1 1
1 1
2 2
1 1
1 1
2 2
1 1
1 1
2 2
1 1
2 2
1 1
1 1
1 1
2 2
2 2
1 1
1 1
2 2
1 1
2 2
2 2
2 2
1 1
2 2
2 2
2 2
2 2
2 2
1 1
1 1
1 1
2 2
2 2
1 1
1 1
2 2
1 1
1 1
2 2
 1 10 10
1 15
1 19
2 16
1 17
2 4
2 2
2 8
1 11
2 10
2 6
 10 10 10
10 2
19 9
19 17
8 8
5 3
20 4
12 12
2 16
5 19
2 4
 2 2 20
2 4
2 4
1 3
4 2
3 3
2 4
3 3
1 3
1 3
3 3
4 4
3 1
1 3
3 3
2 2
2 4
4 2
4 2
1 1
3 1
 1 10 10
1 19
1 17
2 2
2 10
1 15
2 8
2 6
2 16
2 14
2 4
 10 10 10
8 4
2 4
9 19
16 2
13 7
11 7
7 17
6 6
1 1
15 15
 2 1 2
2 2
1 1
 1 3 100
2 2
1 1
1 5
1 1
2 4
1 1
1 1
2 2
1 1
2 2
2 2
1 1
1 5
2 6
1 1
1 1
2 4
1 3
2 6
1 5
2 6
2 2
2 6
1 1
2 4
1 5
1 1
2 6
1 5
2 4
1 3
2 6
1 5
2 6
2 4
2 2
1 3
2 6
2 4
1 3
1 1
2 2
1 3
1 1
2 6
1 5
1 5
2 4
2 4
1 3
1 5
2 4
2 6
1 3
1 1
1 3
2 6
2 2
2 2
1 1
2 2
2 6
1 5
1 3
2 6
2 4
2 2
2 2
2 6
1 3
1 5
2 2
2 4
2 2
1 3
2 2
1 5
2 4
2 6
2 2
1 5
2 6
2 6
2 6
1 3
1 5
2 2
2 2
1 1
1 5
1 3
1 3
2 2
2 4
1 5
2 2
2 6
1 3
1 3
1 3
 2 2 2
1 3
1 1
 10 10 10
17 11
11 15
8 8
2 4
7 7
9 13
12 8
18 2
15 13
13 17
 1 10 10
2 16
1 1
1 19
2 10
2 4
2 18
2 12
2 6
2 14
2 2
 1 2 100
1 3
2 2
2 4
1 3
2 4
1 1
2 2
1 1
2 4
2 2
2 2
1 3
2 4
1 3
2 4
2 2
2 2
2 4
1 3
2 2
2 4
1 1
2 4
1 3
1 1
1 1
2 4
2 2
1 1
1 3
1 1
1 1
1 1
1 1
2 2
2 4
1 1
1 3
2 4
1 1
1 1
2 4
1 3
1 1
2 4
2 4
1 1
1 1
2 4
2 4
2 4
1 1
2 4
1 3
1 3
2 2
1 1
2 2
1 1
1 3
1 1
2 2
2 4
2 4
2 2
1 3
2 2
1 1
2 4
1 1
2 4
2 4
2 4
2 2
2 2
1 3
2 2
2 2
1 1
2 4
1 1
2 2
2 2
1 1
2 2
1 3
1 3
1 3
1 1
2 4
1 3
1 3
1 1
1 1
1 1
2 4
1 3
1 1
2 4
2 2
 3 3 20
1 1
3 1
1 1
1 1
5 1
3 5
1 3
4 4
1 1
3 1
4 4
4 6
1 3
3 5
6 6
1 1
6 6
1 1
3 3
4 6
 10 10 10
7 19
14 8
15 13
6 6
10 8
18 6
3 1
16 4
8 10
12 12
 10 10 10
4 4
18 20
11 9
1 15
2 2
14 6
2 12
17 9
11 13
8 2
 3 2 10
4 2
6 4
1 3
4 2
6 4
2 2
2 4
1 3
4 4
3 1
 1 10 10
1 11
2 8
1 13
2 2
1 5
1 9
1 3
1 7
1 15
1 17
 10 10 10
15 19
12 8
7 13
12 2
8 10
3 5
13 13
9 9
18 2
5 13
 2 3 20
1 3
1 1
1 1
1 3
2 4
2 4
1 1
2 6
1 1
1 3
3 1
2 6
1 1
2 4
1 1
4 6
1 3
1 3
1 1
3 1
 3 3 20
2 6
1 5
2 6
1 1
1 1
4 6
1 5
1 1
1 1
5 1
1 3
1 3
6 2
6 2
4 6
4 4
3 1
4 4
1 1
1 3
 10 10 10
10 6
7 5
9 13
13 15
19 7
11 13
5 17
16 6
2 14
7 15
 1 1 20
1 1
2 2
2 2
2 2
1 1
2 2
1 1
2 2
1 1
1 1
1 1
1 1
1 1
2 2
1 1
2 2
1 1
1 1
2 2
1 1
 1 1 1
2 2
 1 10 10
2 4
2 8
1 19
2 2
2 10
1 5
2 6
1 17
2 14
1 15
 3 3 20
4 2
3 5
3 1
2 2
3 1
5 5
6 2
6 4
1 5
2 6
5 5
3 1
5 3
3 3
2 6
3 3
2 6
3 3
4 2
1 5
 10 10 10
1 19
3 17
12 4
16 20
5 19
5 17
20 2
15 9
16 4
4 16
 1 10 10
2 4
2 8
2 6
1 17
1 9
1 15
2 10
1 11
2 2
1 13
 10 10 10
9 17
9 13
8 10
12 2
18 14
18 6
10 6
13 19
2 12
10 8
 10 10 10
2 6
5 9
5 15
1 19
6 6
8 4
11 9
13 11
4 6
10 2
 10 10 10
16 2
12 6
8 2
12 2
3 15
6 6
7 17
4 16
11 9
2 6
 10 10 10
18 2
15 13
9 19
6 10
20 18
15 19
2 2
11 13
17 13
3 15
 1 2 1
2 2
 1 10 10
2 4
1 13
1 7
2 14
1 19
1 17
2 2
1 15
1 11
2 6
 1 10 10
1 13
2 4
1 5
2 2
1 19
1 11
1 15
1 17
1 7
2 14
 1 10 10
1 17
2 4
2 2
1 11
1 15
1 19
2 6
2 8
2 12
1 13

YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
 YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
 YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
 YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
 YES
NO
YES
YES
YES
NO
YES
NO
NO
YES
YES
YES
YES
NO
YES
YES
YES
NO
YES
YES
 YES
NO
YES
YES
YES
YES
YES
NO
NO
NO
NO
YES
YES
NO
NO
NO
YES
YES
YES
NO
 YES
NO
NO
NO
NO
NO
NO
NO
NO
NO
 YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
 YES
YES
YES
NO
YES
NO
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
 YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
 YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
NO
YES
NO
YES
NO
YES
YES
YES
NO
YES
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
NO
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
NO
YES
YES
YES
NO
YES
NO
YES
YES
YES
NO
YES
NO
YES
YES
YES
NO
YES
NO
YES
NO
YES
NO
YES
YES
YES
YES
YES
NO
YES
NO
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
YES
YES
 YES
YES
NO
NO
NO
NO
NO
NO
NO
NO
 YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
 YES
YES
YES
YES
YES
NO
NO
YES
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
 YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
 YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
 YES
NO
 YES
NO
NO
YES
YES
NO
YES
YES
NO
NO
NO
YES
YES
YES
NO
YES
YES
NO
YES
YES
NO
NO
YES
NO
NO
NO
NO
NO
NO
NO
NO
YES
YES
YES
YES
YES
NO
NO
YES
YES
YES
NO
NO
YES
NO
NO
NO
NO
NO
YES
NO
NO
YES
NO
NO
NO
NO
NO
NO
NO
NO
YES
YES
NO
NO
NO
NO
NO
YES
YES
YES
YES
YES
YES
NO
NO
NO
YES
NO
NO
NO
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
NO
NO
 YES
YES
 YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
 YES
NO
NO
NO
NO
NO
NO
NO
NO
NO
 YES
YES
NO
YES
YES
NO
YES
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
YES
NO
NO
NO
YES
NO
NO
NO
NO
NO
NO
YES
NO
NO
NO
YES
NO
NO
NO
YES
NO
YES
NO
YES
NO
YES
NO
NO
NO
NO
NO
YES
YES
YES
NO
NO
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
YES
NO
YES
YES
YES
YES
YES
YES
YES
NO
YES
YES
YES
NO
NO
NO
NO
NO
NO
YES
YES
YES
NO
YES
NO
NO
NO
YES
YES
YES
 YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
YES
NO
NO
YES
NO
NO
NO
YES
NO
YES
 YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
 YES
YES
NO
NO
NO
NO
NO
NO
NO
NO
 YES
YES
NO
NO
YES
YES
NO
YES
YES
NO
 YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
 YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
 YES
YES
YES
YES
YES
YES
YES
NO
YES
NO
NO
YES
YES
NO
NO
NO
NO
NO
NO
NO
 YES
NO
YES
YES
YES
NO
YES
NO
YES
YES
NO
YES
NO
YES
YES
YES
NO
YES
YES
YES
 YES
NO
NO
NO
NO
NO
NO
NO
NO
NO
 YES
NO
YES
NO
YES
YES
YES
NO
YES
NO
YES
NO
YES
YES
YES
NO
YES
NO
YES
YES
 YES
 YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
 YES
YES
NO
NO
YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
 YES
YES
YES
NO
NO
NO
NO
NO
NO
NO
 YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
 YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
 YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
 YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
 YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
 YES
 YES
YES
YES
NO
NO
NO
NO
NO
NO
NO
 YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
 YES
YES
YES
YES
YES
YES
YES
YES
NO
NO

#include <bits/stdc++.h>
using namespace std;
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
  os << '{';
  string sep;
  for (const auto &x : v) os << sep << x, sep = ", ";
  return os << '}';
}
template <typename T, size_t size>
ostream &operator<<(ostream &os, const array<T, size> &arr) {
  os << '{';
  string sep;
  for (const auto &x : arr) os << sep << x, sep = ", ";
  return os << '}';
}
template <typename A, typename B>
ostream &operator<<(ostream &os, const pair<A, B> &p) {
  return os << '(' << p.first << ", " << p.second << ')';
}
void dbg_out() { cerr << endl; }
template <typename Head, typename... Tail>
void dbg_out(Head H, Tail... T) {
  cerr << ' ' << H;
  dbg_out(T...);
}
using splay_key = int;
struct splay_node {
  splay_node *parent = nullptr, *child[2] = {nullptr, nullptr};
  splay_key key;
  int size = 1;
  static int get_size(splay_node *x) { return x == nullptr ? 0 : x->size; }
  int parent_index() const {
    if (parent == nullptr) return -1;
    return this == parent->child[0] ? 0 : 1;
  }
  void set_child(int index, splay_node *x) {
    child[index] = x;
    if (x != nullptr) x->parent = this;
  }
  void join() { size = get_size(child[0]) + get_size(child[1]) + 1; }
};
auto random_address = [] {
  char *p = new char;
  delete p;
  return uint64_t(p);
};
mt19937_64 splay_rng(chrono::steady_clock::now().time_since_epoch().count() *
                     (random_address() | 1));
int64_t splay_count = 0;
struct splay_tree {
  static const int POOL_SIZE = 10000;
  static vector<splay_node *> node_pool;
  static vector<splay_node *> pointers_to_delete;
  static splay_node *new_node(const splay_key &key) {
    if (node_pool.empty()) {
      splay_node *ptr = new splay_node[POOL_SIZE];
      pointers_to_delete.push_back(ptr);
      for (int i = POOL_SIZE - 1; i >= 0; i--) node_pool.push_back(ptr + i);
    }
    splay_node *node = node_pool.back();
    node_pool.pop_back();
    node->key = key;
    return node;
  }
  static bool _exit_delete_setup;
  static void _delete_pointers() {
    for (splay_node *node : pointers_to_delete) delete[] node;
    pointers_to_delete.clear();
  }
  ~splay_tree() {
    if (!_exit_delete_setup) {
      atexit(_delete_pointers);
      _exit_delete_setup = true;
    }
  }
  splay_node *root = nullptr;
  bool empty() const { return root == nullptr; }
  int size() const { return root == nullptr ? 0 : root->size; }
  splay_node *set_root(splay_node *x) {
    if (x != nullptr) x->parent = nullptr;
    return root = x;
  }
  void rotate_up(splay_node *x, bool x_join = true) {
    splay_node *p = x->parent, *gp = p->parent;
    int index = x->parent_index();
    if (gp == nullptr)
      set_root(x);
    else
      gp->set_child(p->parent_index(), x);
    p->set_child(index, x->child[!index]);
    x->set_child(!index, p);
    p->join();
    if (x_join) x->join();
  }
  void splay(splay_node *x) {
    splay_count++;
    while (x != root) {
      splay_node *p = x->parent;
      if (p != root)
        rotate_up(x->parent_index() == p->parent_index() ? p : x, false);
      rotate_up(x, false);
    }
    x->join();
  }
  static constexpr double SPLAY_RNG_RANGE = double(splay_rng.max()) + 1.0;
  static constexpr double LOG_CONSTANT = 2.0;
  static constexpr double SPLAY_PROBABILITY = 0.25;
  static const int SIZE_CUTOFF = 100;
  void check_splay(splay_node *x, int depth) {
    int n = size(), log_n = 32 - __builtin_clz(n);
    if (depth > LOG_CONSTANT * log_n ||
        (n < SIZE_CUTOFF &&
         double(splay_rng()) < SPLAY_PROBABILITY * SPLAY_RNG_RANGE))
      splay(x);
  }
  pair<splay_node *, int> insert(const splay_key &key,
                                 bool require_unique = false) {
    return insert(new_node(key), require_unique);
  }
  pair<splay_node *, int> insert(splay_node *x, bool require_unique = false) {
    if (root == nullptr) return {set_root(x), 0};
    splay_node *current = root, *prev = nullptr;
    int below = 0, depth = 0;
    while (current != nullptr) {
      prev = current;
      depth++;
      if (current->key < x->key) {
        below += splay_node::get_size(current->child[0]) + 1;
        current = current->child[1];
      } else {
        if (require_unique && !(x->key < current->key)) {
          below += splay_node::get_size(current->child[0]);
          check_splay(current, depth);
          return {current, below};
        }
        current = current->child[0];
      }
    }
    prev->set_child(prev->key < x->key ? 1 : 0, x);
    check_splay(x, depth);
    for (splay_node *node = x; node != nullptr; node = node->parent)
      node->join();
    return {x, below};
  }
  splay_node *begin() {
    if (root == nullptr) return nullptr;
    splay_node *x = root;
    int depth = 0;
    while (x->child[0] != nullptr) {
      x = x->child[0];
      depth++;
    }
    check_splay(x, depth);
    return x;
  }
  splay_node *successor(splay_node *x) const {
    if (x == nullptr) return nullptr;
    if (x->child[1] != nullptr) {
      x = x->child[1];
      while (x->child[0] != nullptr) x = x->child[0];
      return x;
    }
    while (x->parent_index() == 1) x = x->parent;
    return x->parent;
  }
  splay_node *predecessor(splay_node *x) const {
    if (x == nullptr) return nullptr;
    if (x->child[0] != nullptr) {
      x = x->child[0];
      while (x->child[1] != nullptr) x = x->child[1];
      return x;
    }
    while (x->parent_index() == 0) x = x->parent;
    return x->parent;
  }
  splay_node *last() {
    if (root == nullptr) return nullptr;
    splay_node *x = root;
    int depth = 0;
    while (x->child[1] != nullptr) {
      x = x->child[1];
      depth++;
    }
    check_splay(x, depth);
    return x;
  }
  void clear() {
    vector<splay_node *> nodes;
    nodes.reserve(size());
    for (splay_node *node = begin(); node != nullptr; node = successor(node))
      nodes.push_back(node);
    for (splay_node *node : nodes) {
      *node = splay_node();
      node_pool.push_back(node);
    }
    set_root(nullptr);
  }
  void erase(splay_node *x) {
    splay_node *new_x = nullptr, *fix_node = nullptr;
    if (x->child[0] == nullptr || x->child[1] == nullptr) {
      new_x = x->child[x->child[0] == nullptr ? 1 : 0];
      fix_node = x->parent;
    } else {
      splay_node *next = successor(x);
      assert(next != nullptr && next->child[0] == nullptr);
      new_x = next;
      fix_node = next->parent == x ? next : next->parent;
      next->parent->set_child(next->parent_index(), next->child[1]);
      next->set_child(0, x->child[0]);
      next->set_child(1, x->child[1]);
    }
    if (x == root)
      set_root(new_x);
    else
      x->parent->set_child(x->parent_index(), new_x);
    int depth = 0;
    for (splay_node *node = fix_node; node != nullptr; node = node->parent) {
      node->join();
      depth++;
    }
    if (fix_node != nullptr) check_splay(fix_node, depth);
    *x = splay_node();
    node_pool.push_back(x);
  }
  pair<splay_node *, int> lower_bound(const splay_key &key) {
    splay_node *current = root, *prev = nullptr, *answer = nullptr;
    int below = 0, depth = 0;
    while (current != nullptr) {
      prev = current;
      depth++;
      if (current->key < key) {
        below += splay_node::get_size(current->child[0]) + 1;
        current = current->child[1];
      } else {
        answer = current;
        current = current->child[0];
      }
    }
    if (prev != nullptr) check_splay(prev, depth);
    return make_pair(answer, below);
  }
  bool contains(const splay_key &key) {
    splay_node *node = lower_bound(key).first;
    return node != nullptr && node->key == key;
  }
  bool erase(const splay_key &key) {
    splay_node *x = lower_bound(key).first;
    if (x == nullptr || x->key != key) return false;
    erase(x);
    return true;
  }
  splay_node *node_at_index(int index) {
    if (index < 0 || index >= size()) return nullptr;
    splay_node *current = root;
    int depth = 0;
    while (current != nullptr) {
      int left_size = splay_node::get_size(current->child[0]);
      depth++;
      if (index == left_size) {
        check_splay(current, depth);
        return current;
      }
      if (index < left_size) {
        current = current->child[0];
      } else {
        current = current->child[1];
        index -= left_size + 1;
      }
    }
    assert(false);
  }
  splay_node *query_prefix_key(const splay_key &key) {
    splay_node *node = lower_bound(key).first;
    if (node == nullptr) return root;
    splay(node);
    return node->child[0];
  }
  splay_node *query_prefix_count(int prefix) {
    if (prefix <= 0) return nullptr;
    if (prefix >= size()) return root;
    splay_node *node = node_at_index(prefix);
    splay(node);
    return node->child[0];
  }
  splay_node *query_suffix_key(const splay_key &key) {
    splay_node *node = lower_bound(key).first;
    if (node == nullptr) return nullptr;
    node = predecessor(node);
    if (node == nullptr) return root;
    splay(node);
    return node->child[1];
  }
  splay_node *query_suffix_count(int suffix) {
    if (suffix <= 0) return root;
    if (suffix >= size()) return nullptr;
    splay_node *node = node_at_index(suffix - 1);
    splay(node);
    return node->child[1];
  }
};
bool splay_tree::_exit_delete_setup = false;
vector<splay_node *> splay_tree::node_pool;
vector<splay_node *> splay_tree::pointers_to_delete;
int N, M, Q;
int get_order(splay_tree &tree, int x) {
  if (x <= 0) return 0;
  if (x >= M) return tree.size();
  return tree.lower_bound(x).second;
}
struct tree_2d {
  int tree_n;
  vector<splay_tree> tree;
  void init(int n) {
    tree_n = n;
    tree.assign(tree_n + 1, {});
  }
  void update(int r, int c, bool add) {
    for (int x = r + 1; x <= tree_n; x += x & -x)
      if (add)
        tree[x].insert(c);
      else
        tree[x].erase(c);
  }
  int query(int r, int c1, int c2) {
    int count = 0;
    for (int x = r; x > 0; x -= x & -x)
      count += get_order(tree[x], c2) - get_order(tree[x], c1);
    return count;
  }
  int query(int r1, int r2, int c1, int c2) {
    return query(r2, c1, c2) - query(r1, c1, c2);
  }
};
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> N >> M >> Q;
  tree_2d tree[2];
  tree[0].init(N);
  tree[1].init(N);
  set<array<int, 2>> bad;
  int64_t pairs = 0;
  for (int q = 0; q < Q; q++) {
    int r, c;
    cin >> r >> c;
    r--;
    c--;
    int type = 1 - r % 2;
    bool add = bad.find({r, c}) == bad.end();
    if (add)
      bad.insert({r, c});
    else
      bad.erase({r, c});
    r /= 2;
    c /= 2;
    tree[type].update(r, c, add);
    if (type == 0)
      pairs += (add ? +1 : -1) * tree[1].query(0, r + 1, 0, c + 1);
    else
      pairs += (add ? +1 : -1) * tree[0].query(r, N, c, M);
    cout << (pairs == 0 ? "YES" : "NO") << '\n';
  }
}
