#include <bits/stdc++.h>
using namespace std;
using uint = unsigned int;
using ll = long long;
using ull = unsigned long long;
using pii = pair<int, int>;
using pli = pair<ll, int>;
using pil = pair<int, ll>;
using pll = pair<ll, ll>;
template <typename T>
using vec = vector<T>;
using vi = vec<int>;
using vl = vec<ll>;
template <typename T>
using que = queue<T>;
template <typename T>
using deq = deque<T>;
template <typename T>
T id(T b) {
  return b;
};
template <typename T>
void chmax(T &x, T y) {
  if (x < y) x = y;
}
template <typename T>
void chmin(T &x, T y) {
  if (x > y) x = y;
}
template <typename S, typename K>
bool contains(S s, K k) {
  return s.find(k) != s.end();
}
void fastio() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
}
constexpr ll TEN(int n) {
  if (n == 0)
    return 1LL;
  else
    return 10LL * TEN(n - 1);
}
const int MAX_N = 200000;
int n;
vec<pli> p;
ll cnt[MAX_N + 1];
int main() {
  fastio();
  cin >> n;
  for (size_t i = 0; i < size_t(n); i++) {
    ll r, l;
    cin >> l >> r;
    p.emplace_back(l, 0);
    p.emplace_back(r, 1);
  }
  sort((p).begin(), (p).end());
  ll c = 0;
  ll prev = -1;
  int i = 0;
  for (; i < 2 * n;) {
    int j = i;
    cnt[c] += p[i].first - prev - 1;
    while (j < 2 * n && p[i].first == p[j].first && p[j].second == 0) {
      j++;
      c++;
    }
    cnt[c]++;
    while (j < 2 * n && p[i].first == p[j].first) {
      j++;
      c--;
    }
    prev = p[i].first;
    i = j;
  }
  for (size_t i = 1; i <= size_t(n); i++) {
    cout << cnt[i] << ' ';
  }
  cout << '\n';
  return 0;
}
