#include<iostream> #include<cstring> #include<cstdio> #define Max 100005 #define mid (l+r)>>1 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 using namespace std; int N; struct tree{ int l,r,s; }; tree tr[Max<<2]; void bulid(int l,int r,int rt){ tr[rt].l=l; tr[rt].r=r; tr[rt].s=0; if(l==r) return ; int m=mid; bulid(lson); bulid(rson); } void add(int l,int r,int rt){ if(tr[rt].l ==l && tr[rt].r == r) { tr[rt].s++; return ; } int m=(tr[rt].l+tr[rt].r)>>1; if(l>=m+1) add(l,r,rt<<1|1); else if(r<=m) add(l,r,rt<<1); else{ add(lson); add(rson); } } void output(int rt,int t){ if(tr[rt].l == tr[rt].r){ printf("%d",tr[rt].s+t); if(tr[rt].l == N) printf("\n"); else printf(" "); return ; } output(rt<<1,t+tr[rt].s); output(rt<<1|1,t+tr[rt].s); } int main(){ int i,l,r; while(scanf("%d",&N) && N){ bulid(1,N,1); for(i=1;i<=N;i++){ scanf("%d %d",&l,&r); add(l,r,1); } output(1,0); } return 0; }