func_code_string: #include <bits/stdc++.h>   using namespace std;   long long inf = 1e9 + 7;   long long mod = 1e9 + 7;   using namespace std;   bool comp(pair<pair<long long, long long>, long long> a,             pair<pair<long long, long long>, long long> b) {     if (a.first.first != b.first.first) return a.first.first < b.first.first;     return a.first.second < b.first.second;   }   bool isOverlap(pair<long long, long long> a, pair<long long, long long> b) {     if (a.second < b.first or a.first > b.second) return false;     return true;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long T, N, i, j, k, L, l, r, m, n;     long long K, P;     long long M;     cin >> T;     while (T--) {       deque<pair<pair<long long, long long>, long long> > v;       cin >> N;       vector<long long> ret(N, 0);       for (i = 0; i < N; i++) {         cin >> l >> r;         v.push_back(make_pair(make_pair(l, r), i));       }       sort(v.begin(), v.end(), comp);       vector<long long> ans;       while (!v.empty()) {         pair<long long, long long> inv = v.front().first;         ans.push_back(v.front().second);         v.pop_front();         while (!v.empty() and isOverlap(inv, v.front().first)) {           ans.push_back(v.front().second);           inv.first =               (((inv.first) < (v.front().first.first)) ? (inv.first)                                                        : (v.front().first.first));           inv.second = (((inv.second) > (v.front().first.second))                             ? (inv.second)                             : (v.front().first.second));           v.pop_front();         }         break;       }       if (v.empty())         cout << -1 << endl;       else {         for (i = 0; i < ans.size(); i++) ret[ans[i]] = 1;         while (!v.empty()) {           ret[v.front().second] = 2;           v.pop_front();         }         for (i = 0; i < N; i++) cout << ret[i] <<    ;         cout << endl;       }       ret.clear();     }   }   