#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
struct rec {
  int l, r, u, d;
  inline void init(void) { scanf("%d%d%d%d", &l, &d, &r, &u); }
} t[N];
inline bool cmp1(rec a, rec b) { return a.l < b.l; }
inline bool cmp2(rec a, rec b) { return a.d < b.d; }
vector<rec> v, tmp;
queue<vector<rec> > q;
int n;
inline bool solve(void) {
  if (v.size() == 1) return true;
  sort(v.begin(), v.end(), cmp1);
  int Max = v[0].r;
  for (int i = 1; i < v.size(); i++)
    if (v[i].l >= Max) {
      tmp.clear();
      for (int j = 0; j < i; j++) tmp.push_back(v[j]);
      q.push(tmp);
      tmp.clear();
      for (int j = i; j < v.size(); j++) tmp.push_back(v[j]);
      q.push(tmp);
      return true;
    } else
      Max = max(Max, v[i].r);
  sort(v.begin(), v.end(), cmp2);
  Max = v[0].u;
  for (int i = 1; i < v.size(); i++)
    if (v[i].d >= Max) {
      tmp.clear();
      for (int j = 0; j < i; j++) tmp.push_back(v[j]);
      q.push(tmp);
      tmp.clear();
      for (int j = i; j < v.size(); j++) tmp.push_back(v[j]);
      q.push(tmp);
      return true;
    } else
      Max = max(Max, v[i].u);
  return false;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) t[i].init(), v.push_back(t[i]);
  q.push(v);
  while (!q.empty()) {
    v = q.front();
    q.pop();
    if (!solve()) {
      puts("NO");
      return 0;
    }
  }
  puts("YES");
  return 0;
}
