#include <bits/stdc++.h>
using namespace std;
#define pb emplace_back 
#define mp make_pair
#define fi first
#define se second
#define all(v) v.begin(),v.end()
#define run ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);cerr.tie(0);


int  main()
 {


 
          int  n,i,x,y,j,c;
              cin>>n;



              vector<int>a(n,0),b(n,0),res;
              vector<pair<int,int>>v;
            map<pair<int,int>,set<int>>mm,mm1; 

                for(i=0;i<n;i++)
                {
                    cin>>a[i]>>b[i];
                    v.pb(mp(a[i],b[i]));
                    v.pb(mp(b[i]+1,-a[i]));
                }

                sort(all(v));

                set<int>sx;

                for(i=1;i<=n;i++)
                   sx.insert(i);


          

                for(i=0;i<v.size();i++)
                {
                    x=v[i].fi;
                    y=v[i].se;


                    if(y>=0)
                    {
                        pair<int,int>xx;
                        xx.fi=x;
                        xx.se=y;
                        auto it=sx.begin();
                        sx.erase(it);
                        c=*it;

                        mm[xx].insert(c);
                        res.pb(c);
                    }
                    else
                    {
                        
                        pair<int,int>xx;
                        xx.fi=abs(y);
                        xx.se=x-1;
                        auto it=mm[xx].begin();
                        c=*it;
                        sx.insert(c);
                        mm[xx].erase(it);


                    }


                }
                set<int>ss;

               for(i=0;i<res.size();i++)
               ss.insert(res[i]);
               


                     j=0;

               for(i=0;i<v.size();i++)
               {
                   x=v[i].fi;
                    y=v[i].se;
                    if(y>=0)
                    {
                          pair<int,int>xx;
                        xx.fi=x;
                        xx.se=y;
                        mm1[xx].insert(res[j]);
                        j++;
                    }
               }

               cout<<ss.size()<<endl;


                for(i=0;i<n;i++)
                {
                    x=a[i];
                    y=b[i];

                    pair<int,int>xx;
                        xx.fi=x;
                        xx.se=y;

                         auto it=mm1[xx].begin();
                        c=*it;
                       
                        mm1[xx].erase(it);
                        cout<<c<<" ";

                }

}