#include <bits/stdc++.h>
using namespace std;
vector<int> callps(string &s) {
  int i, j = 0, n = s.size();
  vector<int> lps(n + 1);
  for (i = 1; i < n;) {
    if (s[i] == s[j]) {
      j++;
      lps[i] = j;
      i++;
    } else {
      if (!j)
        i++;
      else
        j = lps[j - 1];
    }
  }
  return lps;
}
int KMP(string &A, string &B) {
  int i, j = 0, n = A.size(), m = B.size();
  vector<int> lps = callps(B);
  for (i = 0; i < n;) {
    if (A[i] == B[j]) {
      i++;
      j++;
    } else {
      if (!j)
        i++;
      else
        j = lps[j - 1];
    }
  }
  for (i = 0; i < n; i++) cout << lps[i] << " ";
  return lps[n - 1];
}
int K2MP(string &A, string &B) {
  int i, j = 0, n = A.size(), m = B.size();
  int k = 0;
  vector<int> lps = callps(B);
  for (i = 0; i < n;) {
    if (A[i] == B[j]) {
      i++;
      j++;
    } else {
      if (!j)
        i++;
      else
        j = lps[j - 1];
    }
    if (j == m) return m;
    k = max(k, j);
  }
  return k;
}
int lcs(string &s1, string &s2, int n, int m) {
  if (n == 0 or m == 0) return 0;
  if (s1[n - 1] == s2[m - 1])
    return 1 + lcs(s1, s2, n - 1, m - 1);
  else
    return max(lcs(s1, s2, n - 1, m), lcs(s1, s2, n, m - 1));
}
void solve() {
  long long int i, j = 0, r = 200, p, q, k = 1, ans = 0, d, y = 0, x, n, h,
                   flag = 0, m = 0, id, c = 0, h1, h2, a1, b1, w, b, a;
  string s1, s2;
  cin >> n;
  map<long long, long long> M;
  for (i = 0; i < n; i++) {
    cin >> a >> b;
    M[a]++;
    M[b + 1]--;
  }
  for (auto it : M) {
    M[it.first] += y;
    y = M[it.first];
  }
  vector<long long> cnt(n + 1);
  c = 0;
  map<long long, long long>::iterator it, it2;
  for (it = M.begin(); it != M.end(); ++it) {
    if (c) {
      cnt[it2->second] += (it->first - it2->first);
    }
    c = 1;
    it2 = it;
  }
  for (i = 1; i < n + 1; i++) cout << cnt[i] << " ";
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  while (t--) solve();
}
