// 就是求在X轴左边的星星个数吧,以前用树状数组写过
#include<stdio.h>
#include<string.h>
#define M 32000
struct tree
{
int left,right,num;
}a[3*M];
int sum[15010];
void bulid_tree(int l,int r,int pos)
{
int mid;
a[pos].left=l;
a[pos].right=r;
a[pos].num=0;
if(l==r)return ;
mid=(l+r)/2;
bulid_tree(l,mid,2*pos);
bulid_tree(mid+1,r,2*pos+1);
}
int query(int l,int r,int pos)
{
int sum=0,mid;
if(a[pos].left==l && a[pos].right==r)
return a[pos].num;
else
{
mid=(a[pos].left+a[pos].right)/2;
if(l>mid)
sum+=query(l,r,2*pos+1);
else if(r<=mid)
sum+=query(l,r,2*pos);
else
{
sum+=query(l,mid,2*pos)+query(mid+1,r,2*pos+1);
}
return sum;
}
}
void add(int x,int pos)
{
int mid;
a[pos].num++;
if(a[pos].left==x && a[pos].right==x)
{
return ;
}
mid=(a[pos].left+a[pos].right)/2;
if(x<=mid)
add(x,2*pos);
else
add(x,2*pos+1);
}
int main()
{
int n,i,x,y;
while(scanf("%d",&n)!=EOF)
{
bulid_tree(0,M,1);
memset(sum,0,sizeof(sum));
for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
sum[query(0,x,1)]++;
add(x,1);
}
for(i=0;i<n;i++)
printf("%d\n",sum[i]);
}
return 0;
}