#include <bits/stdc++.h>
using namespace std;
mt19937 rnd(time(0));
const long long inf = 0x3f3f3f3f3f3f3f3fLL;
const long long N = 3e5 + 10;
const long long MOD = 1e9 + 7;
struct BIT {
  long long n;
  vector<long long> ft;
  BIT(long long n) : n(n), ft(n) {}
  void upd(long long i, long long x) {
    for (; i < n; i |= i + 1) ft[i] += x;
  }
  long long get(long long i) {
    long long ans = 0;
    for (; i >= 0; i = (i & (i + 1)) - 1) ans += ft[i];
    return ans;
  }
  long long get_range(long long l, long long r) { return get(r) - get(l - 1); }
  void upd_range(long long l, long long r, long long x) {
    upd(l, x);
    upd(r + 1, -x);
  }
};
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long n;
  cin >> n;
  vector<pair<pair<long long, long long>, long long>> a(n);
  vector<long long> r;
  for (long long i = 0; i < n; i++) {
    cin >> a[i].first.first >> a[i].first.second;
    a[i].second = i;
    r.push_back(a[i].first.second);
  }
  sort(r.begin(), r.end());
  r.erase(unique(r.begin(), r.end()), r.end());
  sort(a.begin(), a.end());
  BIT o(n + 1);
  vector<long long> ans(n);
  for (long long i = n - 1; i >= 0; i--) {
    long long idx =
        lower_bound(r.begin(), r.end(), a[i].first.second) - r.begin() + 1;
    ans[a[i].second] = o.get(idx);
    o.upd(idx, 1);
  }
  for (auto i : ans) cout << i << '\n';
  return 0;
}
