#include <bits/stdc++.h>
using namespace std;
long long tree[2600][2600];
void updatey(int x, int y, long long val) {
  while (y < 2600) {
    tree[x][y] += val;
    y += (y & -y);
  }
}
void update(int x, int y, long long val) {
  while (x < 2600) {
    updatey(x, y, val);
    x += (x & -x);
  }
}
long long ready(int x, int y) {
  long long custo = 0;
  while (y > 0) {
    custo += tree[x][y];
    y -= (y & -y);
  }
  return custo;
}
long long read(int x, int y) {
  long long custo = 0;
  while (x > 0) {
    custo += ready(x, y);
    x -= (x & -x);
  }
  return custo;
}
map<pair<pair<int, int>, pair<int, int> >, long long> mapa;
int main() {
  int n, m, q, t, a1, b1, a2, b2;
  scanf("%d %d %d", &n, &m, &q);
  for (int k = 0; k < q; k++) {
    scanf("%d %d %d %d %d", &t, &a1, &b1, &a2, &b2);
    if (t == 1) {
      long long val = (rand() << 30) + (rand() << 15) + rand();
      mapa[{{a1, b1}, {a2, b2}}] = val;
      update(a1, b1, val);
      update(a2 + 1, b2 + 1, val);
      update(a2 + 1, b1, -val);
      update(a1, b2 + 1, -val);
    } else if (t == 3) {
      if (read(a1, b1) == read(a2, b2))
        printf("Yes\n");
      else
        printf("No\n");
    } else {
      long long val = mapa[{{a1, b1}, {a2, b2}}];
      mapa[{{a1, b1}, {a2, b2}}] = 0;
      update(a1, b1, -val);
      update(a2 + 1, b2 + 1, -val);
      update(a2 + 1, b1, val);
      update(a1, b2 + 1, val);
    }
  }
}
