#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<<" ";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGIgZW1wbGFjZV9iYWNrIAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgcnVuIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoMCk7Y291dC50aWUoMCk7Y2Vyci50aWUoMCk7CgoKaW50ICBtYWluKCkKIHsKCgogCiAgICAgICAgICBpbnQgIG4saSx4LHksaixjOwogICAgICAgICAgICAgIGNpbj4+bjsKCgoKICAgICAgICAgICAgICB2ZWN0b3I8aW50PmEobiwwKSxiKG4sMCkscmVzOwogICAgICAgICAgICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PnY7CiAgICAgICAgICAgIG1hcDxwYWlyPGludCxpbnQ+LHNldDxpbnQ+Pm1tLG1tMTsgCgogICAgICAgICAgICAgICAgZm9yKGk9MDtpPG47aSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNpbj4+YVtpXT4+YltpXTsKICAgICAgICAgICAgICAgICAgICB2LnBiKG1wKGFbaV0sYltpXSkpOwogICAgICAgICAgICAgICAgICAgIHYucGIobXAoYltpXSsxLC1hW2ldKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc29ydChhbGwodikpOwoKICAgICAgICAgICAgICAgIHNldDxpbnQ+c3g7CgogICAgICAgICAgICAgICAgZm9yKGk9MTtpPD1uO2krKykKICAgICAgICAgICAgICAgICAgIHN4Lmluc2VydChpKTsKCgogICAgICAgICAgCgogICAgICAgICAgICAgICAgZm9yKGk9MDtpPHYuc2l6ZSgpO2krKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB4PXZbaV0uZmk7CiAgICAgICAgICAgICAgICAgICAgeT12W2ldLnNlOwoKCiAgICAgICAgICAgICAgICAgICAgaWYoeT49MCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhaXI8aW50LGludD54eDsKICAgICAgICAgICAgICAgICAgICAgICAgeHguZmk9eDsKICAgICAgICAgICAgICAgICAgICAgICAgeHguc2U9eTsKICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBpdD1zeC5iZWdpbigpOwogICAgICAgICAgICAgICAgICAgICAgICBzeC5lcmFzZShpdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGM9Kml0OwoKICAgICAgICAgICAgICAgICAgICAgICAgbW1beHhdLmluc2VydChjKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnBiKGMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgcGFpcjxpbnQsaW50Pnh4OwogICAgICAgICAgICAgICAgICAgICAgICB4eC5maT1hYnMoeSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHh4LnNlPXgtMTsKICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBpdD1tbVt4eF0uYmVnaW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgYz0qaXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHN4Lmluc2VydChjKTsKICAgICAgICAgICAgICAgICAgICAgICAgbW1beHhdLmVyYXNlKGl0KTsKCgogICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0PGludD5zczsKCiAgICAgICAgICAgICAgIGZvcihpPTA7aTxyZXMuc2l6ZSgpO2krKykKICAgICAgICAgICAgICAgc3MuaW5zZXJ0KHJlc1tpXSk7CiAgICAgICAgICAgICAgIAoKCiAgICAgICAgICAgICAgICAgICAgIGo9MDsKCiAgICAgICAgICAgICAgIGZvcihpPTA7aTx2LnNpemUoKTtpKyspCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIHg9dltpXS5maTsKICAgICAgICAgICAgICAgICAgICB5PXZbaV0uc2U7CiAgICAgICAgICAgICAgICAgICAgaWYoeT49MCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpcjxpbnQsaW50Pnh4OwogICAgICAgICAgICAgICAgICAgICAgICB4eC5maT14OwogICAgICAgICAgICAgICAgICAgICAgICB4eC5zZT15OwogICAgICAgICAgICAgICAgICAgICAgICBtbTFbeHhdLmluc2VydChyZXNbal0pOwogICAgICAgICAgICAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICBjb3V0PDxzcy5zaXplKCk8PGVuZGw7CgoKICAgICAgICAgICAgICAgIGZvcihpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB4PWFbaV07CiAgICAgICAgICAgICAgICAgICAgeT1iW2ldOwoKICAgICAgICAgICAgICAgICAgICBwYWlyPGludCxpbnQ+eHg7CiAgICAgICAgICAgICAgICAgICAgICAgIHh4LmZpPXg7CiAgICAgICAgICAgICAgICAgICAgICAgIHh4LnNlPXk7CgogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBpdD1tbTFbeHhdLmJlZ2luKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGM9Kml0OwogICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBtbTFbeHhdLmVyYXNlKGl0KTsKICAgICAgICAgICAgICAgICAgICAgICAgY291dDw8Yzw8IiAiOwoKICAgICAgICAgICAgICAgIH0KCn0=