func_code_string: #include <bits/stdc++.h>   using namespace std;   const int mxn = 200000;   int n;   int a[mxn], b[mxn], first[mxn], ff[mxn];   vector<int> v[mxn];   auto cmp = [](int x, int y) { return b[x] > b[y]; };   priority_queue<int, vector<int>, decltype(cmp)> pq(cmp);   map<int, int> second;   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cin >> n;     for (int i = 0; i < n; i++) {       cin >> a[i] >> b[i];       a[i]--, b[i]--;       v[a[i]].push_back(i);     }     int p = -1, q = -1;     for (int i = 0; i < n; i++) {       for (int j : v[i]) pq.push(j);       int x = pq.top();       pq.pop();       first[i] = x, ff[x] = i + 1;       if (!~p) {         auto it = second.lower_bound(i);         if (it != second.end() && it->second >= a[x]) {           p = first[it->second], q = x;         } else {           it = second.insert({b[x], i}).first;           if (it->second < i) {             if (next(it) != second.end() && i <= next(it)->second)               it = second.erase(it);             while (it != second.begin() && (--it)->second <= i)               it = second.erase(it);           }         }       }     }     cout << (!~p ?  YES  :  NO ) <<   n ;     for (int i = 0; i < 1 + !!~p; i++) {       cout << ff[0];       for (int i = 1; i < n; i++) cout <<     << ff[i];       cout <<   n ;       if (~p) swap(ff[p], ff[q]);     }     return 0;   }   