#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int maxn = 2e5 + 100;
const int maxl = 1e7 + 100;
const int minl = 0;
map<int, int> seg;
int n, ans[maxn];
pair<pair<int, int>, int> p[maxn];
vector<int> v;
int a, b;
int add(int p, int xl, int xr, int id) {
  if (xl > p) {
    seg[id]++;
    return 0;
  }
  if (xr <= p) return 0;
  if (xl + 1 == xr) return 0;
  int mid = (xl + xr) / 2;
  add(p, xl, mid, 2 * id), add(p, mid, xr, 2 * id + 1);
}
int ch(int p, int xl, int xr, int id) {
  if (p < xl || xr <= p) return 0;
  if (xl + 1 == xr) return seg[id];
  int mid = (xl + xr) / 2;
  return ch(p, xl, mid, 2 * id) + ch(p, mid, xr, 2 * id + 1) + seg[id];
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%ld%ld", &a, &b);
    p[i].first.first = b, p[i].first.second = a;
    p[i].second = i;
  }
  sort(p, p + n);
  for (int i = 0; i < n; i++) p[i].first.first = (i + 1) * (-1);
  for (int i = 0; i < n; i++) swap(p[i].first.first, p[i].first.second);
  sort(p, p + n);
  add((-1) * p[n - 1].first.second, minl, maxl, 1);
  for (int i = n - 2; i >= 0; i--) {
    int x = ch((-1) * p[i].first.second, minl, maxl, 1);
    ans[p[i].second] = x;
    add((-1) * p[i].first.second, minl, maxl, 1);
  }
  for (int i = 0; i < n; i++) printf("%d\n", ans[i]);
}
