#include <bits/stdc++.h>
using namespace std;
const long long nax = 2505;
mt19937_64 rng(time(NULL));
struct info {
  long long r, c, r2, c2;
};
auto cmp = [](const info &l, const info &r) {
  if (l.r == r.r) {
    if (l.c == r.c) {
      if (l.r2 == r.r2) {
        return l.c2 < r.c2;
      } else {
        return l.r2 < r.r2;
      }
    } else {
      return l.c < r.c;
    }
  } else {
    return l.r < r.r;
  }
};
long long n, m, q;
long long a[nax][nax], bit[nax][nax];
map<info, long long, decltype(cmp)> mp(cmp);
long long que(long long x, long long y) {
  long long ret = 0;
  for (long long i = x; i >= 1; i -= i & -i) {
    for (long long j = y; j >= 1; j -= j & -j) {
      ret += bit[i][j];
    }
  }
  return ret;
}
void upd(long long x, long long y, long long val) {
  for (long long i = x; i < nax; i += i & -i) {
    for (long long j = y; j < nax; j += j & -j) {
      bit[i][j] += val;
    }
  }
}
void ins(long long x, long long y, long long x2, long long y2, long long val) {
  upd(x, y, val);
  upd(x2 + 1, y, -val);
  upd(x, y2 + 1, -val);
  upd(x2 + 1, y2 + 1, val);
}
long long ask(long long x, long long y) {
  long long ret = que(x, y);
  return ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  cout.tie(NULL);
  cin.tie(NULL);
  cin >> n >> m >> q;
  while (q--) {
    long long t;
    info inp;
    cin >> t >> inp.r >> inp.c >> inp.r2 >> inp.c2;
    if (t == 3) {
      long long ret = ask(inp.r, inp.c);
      long long ret2 = ask(inp.r2, inp.c2);
      if (ret == ret2) {
        cout << "Yes\n";
      } else {
        cout << "No\n";
      }
    } else if (t == 1) {
      long long val = rng();
      mp[inp] = val;
      ins(inp.r, inp.c, inp.r2, inp.c2, val);
    } else {
      long long val = mp[inp];
      ins(inp.r, inp.c, inp.r2, inp.c2, -val);
    }
  }
}
