func_code_string: #include <bits/stdc++.h>   using namespace std;   const int inf = 0x3f3f3f3f;   struct Rec {     pair<int, int> interval[4];   } recs[100005];   bool check(set<pair<pair<int, int>, int>> st[]) {     int n = st[0].size();     if (n == 1) return true;     set<pair<pair<int, int>, int>>::iterator iter[4];     for (int i = 0; i < 4; i++) iter[i] = st[i].begin();     vector<int> mxr(4, -inf);     for (int i = 0; i < n - 1; i++) {       for (int j = 0; j < 4; j++) {         mxr[j] = max(mxr[j], iter[j]->first.second);         iter[j]++;         if (iter[j]->first.first >= mxr[j]) {           set<pair<pair<int, int>, int>> mini[4];           vector<int> indexs;           for (auto it = st[j].begin(); it != iter[j]; it++) {             int index = it->second;             indexs.push_back(index);           }           for (auto index : indexs) {             for (int z = 0; z < 4; z++) {               mini[z].insert(make_pair(recs[index].interval[z], index));               st[z].erase(make_pair(recs[index].interval[z], index));             }           }           if (check(mini) && check(st)) return true;           return false;         }       }     }     return false;   }   int main() {     ios::sync_with_stdio(false);     int n;     cin >> n;     for (int i = 0; i < n; i++) {       int a, b, c, d;       cin >> a >> b >> c >> d;       recs[i].interval[0] = make_pair(a, c);       recs[i].interval[1] = make_pair(b, d);       recs[i].interval[2] = make_pair(-c, -a);       recs[i].interval[3] = make_pair(-d, -b);     }     set<pair<pair<int, int>, int>> st[4];     for (int i = 0; i < 4; i++) {       for (int j = 0; j < n; j++) st[i].insert(make_pair(recs[j].interval[i], j));     }     puts(check(st) ?  YES  :  NO );     return 0;   }   