#include <bits/stdc++.h>
using namespace std;
template <typename T>
void PV(T v) {
  for (const auto e : v) cout << e << " ";
  cout << endl;
}
pair<pair<int, int>, int> sqaures[100010][4];
bool fun(set<pair<pair<int, int>, int> > &S0,
         set<pair<pair<int, int>, int> > &S1,
         set<pair<pair<int, int>, int> > &S2,
         set<pair<pair<int, int>, int> > &S3) {
  if (S0.size() < 2) return true;
  set<pair<pair<int, int>, int> > nw[4];
  set<pair<pair<int, int>, int> >::iterator it[4];
  int prev[4];
  it[0] = S0.begin();
  it[1] = S1.begin();
  it[2] = S2.begin();
  it[3] = S3.begin();
  for (long long i = 0; i < 4; i++) prev[i] = it[i]->first.second;
  for (long long i = 0; i < 4; i++) it[i]++;
  for (long long i_old = 1; i_old < S0.size(); i_old++) {
    for (long long i_4 = 0; i_4 < 4; i_4++) {
      if (it[i_4]->first.first >= prev[i_4]) {
        set<pair<pair<int, int>, int> >::iterator itter;
        switch (i_4) {
          case 0:
            itter = S0.begin();
            break;
          case 1:
            itter = S1.begin();
            break;
          case 2:
            itter = S2.begin();
            break;
          case 3:
            itter = S3.begin();
            break;
        }
        for (long long i_new = 0; i_new < i_old; i_new++) {
          int index = itter->second;
          itter++;
          for (long long j_4 = 0; j_4 < 4; j_4++)
            nw[j_4].insert(sqaures[index][j_4]);
          S0.erase(sqaures[index][0]);
          S1.erase(sqaures[index][1]);
          S2.erase(sqaures[index][2]);
          S3.erase(sqaures[index][3]);
        }
        return fun(nw[0], nw[1], nw[2], nw[3]) & fun(S0, S1, S2, S3);
      }
      if (true) prev[i_4] = max(prev[i_4], it[i_4]->first.second);
      it[i_4]++;
    }
  }
  return false;
}
int main() {
  set<pair<pair<int, int>, int> > st[4];
  int n;
  cin >> n;
  for (long long i = 0; i < n; i++) {
    int x1, y1, x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    sqaures[i][0] = make_pair(make_pair(x1, x2), i);
    sqaures[i][1] = make_pair(make_pair(-x2, -x1), i);
    sqaures[i][2] = make_pair(make_pair(y1, y2), i);
    sqaures[i][3] = make_pair(make_pair(-y2, -y1), i);
    st[0].insert(sqaures[i][0]);
    st[1].insert(sqaures[i][1]);
    st[2].insert(sqaures[i][2]);
    st[3].insert(sqaures[i][3]);
  }
  if (fun(st[0], st[1], st[2], st[3])) {
    cout << "YES" << endl;
  } else {
    cout << "NO" << endl;
  }
  return 0;
}
