#include <bits/stdc++.h>
using namespace std;
long long ar[2505][2505], n, m, q;
void updatey(long long x, long long y, long long val);
long long gety(long long x, long long y);
void update(long long x, long long y, long long val) {
  x++;
  while (x <= n) {
    updatey(x, y, val);
    x += (-x & x);
  }
}
void updatey(long long x, long long y, long long val) {
  y++;
  while (y <= m) {
    ar[x][y] ^= val;
    y += (-y & y);
  }
}
long long get(long long x, long long y) {
  long long ans = 0;
  x++;
  while (x > 0) {
    ans ^= gety(x, y);
    x -= (-x & x);
  }
  return ans;
}
long long gety(long long x, long long y) {
  long long ans = 0;
  y++;
  while (y > 0) {
    ans ^= ar[x][y];
    y -= (-y & y);
  }
  return ans;
}
map<pair<pair<long long, long long>, pair<long long, long long> >, long long>
    mr;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int main() {
  cin >> n >> m >> q;
  n++, m++;
  for (int i = 0; i < q; i++) {
    long long t, a, b, c, d, r;
    cin >> t >> a >> b >> c >> d;
    if (t == 1) {
      r = rng();
      mr[make_pair(make_pair(a, b), make_pair(c, d))] = r;
      update(a, b, r);
      update(c + 1, d + 1, r);
      update(a, d + 1, r);
      update(c + 1, b, r);
    } else if (t == 2) {
      r = mr[make_pair(make_pair(a, b), make_pair(c, d))];
      update(a, b, r);
      update(c + 1, d + 1, r);
      update(a, d + 1, r);
      update(c + 1, b, r);
    } else {
      long long x = get(a, b);
      long long y = get(c, d);
      printf("%s\n", (x == y ? "Yes" : "No"));
    }
  }
}
