#include <bits/stdc++.h>
using namespace std;
const int maxn = 2555;
struct FenvTree {
  pair<long long, int> B[maxn][maxn];
  void init(int n, int m) {
    for (int i = 0; i <= n; i++) {
      for (int j = 0; j <= m; j++) {
        B[i][j] = make_pair(0ll, 0);
      }
    }
  }
  void update(int u, int v, long long p) {
    int d;
    if (p < 0ll)
      d = -1;
    else
      d = 1;
    for (int x = u; x < maxn; x |= (x + 1)) {
      for (int y = v; y < maxn; y |= (y + 1)) {
        B[x][y].first += p;
        B[x][y].second += d;
      }
    }
  }
  pair<long long, int> calc(int u, int v) {
    long long P = 0ll;
    int D = 0;
    for (int x = u; x >= 0; x = (x & (x + 1)) - 1) {
      for (int y = v; y >= 0; y = (y & (y + 1)) - 1) {
        P += B[x][y].first;
        D += B[x][y].second;
      }
    }
    return make_pair(P, D);
  }
} T;
int ID[maxn][maxn];
int t, r1, c1, r2, c2;
int main() {
  int n, m, q;
  cin >> n >> m >> q;
  T.init(n, m);
  for (int i = 1; i <= q; i++) {
    cin >> t >> r1 >> c1 >> r2 >> c2;
    if (t != 3) {
      long long res;
      if (t == 1) {
        ID[r1][c1] = i;
        res = 1ll * i * i;
        T.update(r1, c1, res);
        T.update(r1, c2 + 1, -res);
        T.update(r2 + 1, c1, -res);
        T.update(r2 + 1, c2 + 1, res);
      } else {
        res = 1ll * ID[r1][c1] * ID[r1][c1];
        T.update(r1, c1, -res);
        T.update(r1, c2 + 1, res);
        T.update(r2 + 1, c1, res);
        T.update(r2 + 1, c2 + 1, -res);
      }
    } else {
      if (T.calc(r1, c1) == T.calc(r2, c2))
        puts("Yes");
      else
        puts("No");
    }
  }
  return 0;
}
