Link to this code: https://cses.fi/paste/bf7bf94512883cfbc6afd4/
/* 777 */
#include <bits/stdc++.h>
using namespace std;
#define FAST_IO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

const int INF = 1e9;

void solve() {
    int n; cin >> n;
    vector<int> starts(n), ends(n), res(n);
    vector<pair<int,pair<int, int>>> intervals;
    set<int> rooms;
    for (int i = 0 ; i < n ; ++i) {
        cin >> starts[i] >> ends[i];
        intervals.emplace_back(make_pair(starts[i], make_pair(0, i)));
        intervals.emplace_back(make_pair(ends[i], make_pair(1, i)));
        rooms.insert(i + 1);
    }
    sort(intervals.begin(), intervals.end());

    for (auto& [_, p] : intervals) {
        auto& [ty, i] = p;
        if (ty) rooms.insert(res[i]);
        else {
            res[i] = *rooms.begin();
            rooms.erase(rooms.begin());
        }
    }
    cout << *max_element(res.begin(), res.end()) << '\n';
    for (auto& x : res) cout << x << " ";
}

int32_t main() {
    FAST_IO
    solve();
}