#include<iostream>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<algorithm>
#include<queue>
#include<string.h>
#include<stack>
#include<math.h>
#include<string>
#include<stdlib.h>
#include<list>
#include<vector>
using namespace std;
#define N 200001
int n;
int tree[N];
int find(int k)
{
int sum=0;
while (k>0)
{
sum+=tree[k];
k-=k&-k;
}
return sum;
}
void update(int k,int v)
{
while (k<=n)
{
tree[k]+=v;
k+=k&-k;
}
}
int main()
{
int i,j,k;
while (cin>>n,n)
{
k=n;
for (i=0;i<=n;i++)
tree[i]=0;
while (k--)
{
cin>>i>>j;
update(i,1);
update(j+1,-1); //更新一段球
}
cout<<find(1); //注意输出的空格
for (i=2;i<=n;i++)
{
cout<<' '<<find(i); //只需读当个球被刷的次数
}
cout<<endl;
}
}