#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=50010;
int n,s[N],k;
struct inf{
int start,end,num,last;
}cow[N];
bool cmp(inf a,inf b){
return a.start<b.start;
}
bool cmp1(inf a,inf b){
return a.last<b.last;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&cow[i].start,&cow[i].end );
cow[i].last=i;
}sort(cow+1,cow+1+n,cmp);
for(int i=1;i<=n;i++){
bool f=0;
for(int j=1;j<=k;j++){
if(cow[i].start>=s[j]){
s[j]=max(s[j],cow[i].end);
cow[i].num=j;
f=1;
}
}
if(!f){
s[++k]=cow[i].end;
cow[i].num=k;
}
}
printf("%d\n",k);
sort(cow+1,cow+1+n,cmp1);
for(int i=1;i<=n;i++){
printf("%d\n",cow[i].num );
}
return 0;
}