#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
#include<stack>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<limits>
#include<climits>
#include<cmath>
#include<functional>
#include<ctime>
#include<cstdlib>
#include<fstream>
#include<typeinfo>
using namespace std;
typedef long long int ll;
typedef unsigned long long int u64;
typedef unsigned u32;
struct bit
{
int a[1<<17];
void Initialize()
{
memset(a,0,sizeof(a));
}
void Update(int pos, int val)
{
for(;pos<=100000;pos+=pos&(-pos))
a[pos]+=val;
}
int Query(int pos)
{
int ans=0;
for(;pos>=1;pos-=pos&(-pos))
ans+=a[pos];
return ans;
}
}it;
struct coder
{
int a,h,number;
coder(){}
coder(int x, int y)
{
a=x;
h=y;
}
bool operator<(const coder &x) const
{
if(a<x.a)
return true;
if(a>x.a)
return false;
return h<x.h;
}
bool operator==(const coder &x) const
{
return (a==x.a && h==x.h);
}
};
map <coder,int> m;
coder a[1<<19];
int ans[1<<19];
int n;
void input()
{
scanf("%d", &n);
int i;
for(i=1;i<=n;i++)
{
scanf("%d %d", &a[i].a, &a[i].h);
a[i].number=i;
}
}
void solve()
{
it.Initialize();
sort(a+1,a+1+n);
int i;
for(i=1;i<=n;i++)
{
ans[a[i].number]=it.Query(a[i].h)-m[a[i]];
m[a[i]]++;
it.Update(a[i].h,1);
}
for(i=1;i<=n;i++)
printf("%d\n", ans[i]);
}
int main()
{
input();
solve();
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxzdHJpbmc+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8c3RhY2s+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxkZXF1ZT4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPGxpbWl0cz4KI2luY2x1ZGU8Y2xpbWl0cz4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTx0eXBlaW5mbz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1NjQ7CnR5cGVkZWYgdW5zaWduZWQgdTMyOwoKc3RydWN0IGJpdAp7CiAgICBpbnQgYVsxPDwxN107CiAgICB2b2lkIEluaXRpYWxpemUoKQogICAgewogICAgICAgIG1lbXNldChhLDAsc2l6ZW9mKGEpKTsKICAgIH0KICAgIHZvaWQgVXBkYXRlKGludCBwb3MsIGludCB2YWwpCiAgICB7CiAgICAgICAgZm9yKDtwb3M8PTEwMDAwMDtwb3MrPXBvcyYoLXBvcykpCiAgICAgICAgICAgIGFbcG9zXSs9dmFsOwogICAgfQogICAgaW50IFF1ZXJ5KGludCBwb3MpCiAgICB7CiAgICAgICAgaW50IGFucz0wOwogICAgICAgIGZvcig7cG9zPj0xO3Bvcy09cG9zJigtcG9zKSkKICAgICAgICAgICAgYW5zKz1hW3Bvc107CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KfWl0OwoKc3RydWN0IGNvZGVyCnsKICAgIGludCBhLGgsbnVtYmVyOwogICAgY29kZXIoKXt9CiAgICBjb2RlcihpbnQgeCwgaW50IHkpCiAgICB7CiAgICAgICAgYT14OwogICAgICAgIGg9eTsKICAgIH0KICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGNvZGVyICZ4KSBjb25zdAogICAgewogICAgICAgIGlmKGE8eC5hKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBpZihhPnguYSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiBoPHguaDsKICAgIH0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb2RlciAmeCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gKGE9PXguYSAmJiBoPT14LmgpOwogICAgfQp9OwoKbWFwIDxjb2RlcixpbnQ+IG07CmNvZGVyIGFbMTw8MTldOwppbnQgYW5zWzE8PDE5XTsKaW50IG47Cgp2b2lkIGlucHV0KCkKewogICAgc2NhbmYoIiVkIiwgJm4pOwogICAgaW50IGk7CiAgICBmb3IoaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIHNjYW5mKCIlZCAlZCIsICZhW2ldLmEsICZhW2ldLmgpOwogICAgICAgIGFbaV0ubnVtYmVyPWk7CiAgICB9Cn0KCnZvaWQgc29sdmUoKQp7CiAgICBpdC5Jbml0aWFsaXplKCk7CiAgICBzb3J0KGErMSxhKzErbik7CiAgICBpbnQgaTsKICAgIGZvcihpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgYW5zW2FbaV0ubnVtYmVyXT1pdC5RdWVyeShhW2ldLmgpLW1bYVtpXV07CiAgICAgICAgbVthW2ldXSsrOwogICAgICAgIGl0LlVwZGF0ZShhW2ldLmgsMSk7CiAgICB9CiAgICBmb3IoaT0xO2k8PW47aSsrKQogICAgICAgIHByaW50ZigiJWRcbiIsIGFuc1tpXSk7Cn0KCmludCBtYWluKCkKewogICAgaW5wdXQoKTsKICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=