#include<cstdio>#include<algorithm>
using namespace std;//c是树状数组 int n, c[32005], ans[15005];struct N {int x, y;}p[15005];
bool cmp(N a, N b){if(a.y == b.y)return a.x < b.x;return a.y < b.y;}voidupdate(int x,int v){for(int i = x; i <=32005; i += i &(-i)){
c[i]+= v;}}intquery(int x){int ans =0;for(int i = x; i >0; i -= i &(-i)){
ans += c[i];}return ans;}intmain(){scanf("%d",&n);for(int i =1; i <= n; i++){scanf("%d%d",&p[i].x,&p[i].y);//由于x坐标可能为0 所以进行++ 树状数组不能维护0这个点
p[i].x++;}sort(p +1, p +1+ n, cmp);for(int i =1; i <= n; i++){
ans[query(p[i].x)]++;update(p[i].x,1);}for(int i =0; i < n; i++){printf("%d\n", ans[i]);}return0;}