#include <bits/stdc++.h>
const int MAX_N = (int)1e5 + 123;
const double eps = 1e-6;
const int inf = (int)2e9 + 123;
using namespace std;
int n, k;
pair<int, int> a[MAX_N];
long long int ans[MAX_N];
vector<pair<int, pair<int, int> > > events;
multiset<pair<int, int> > now;
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &a[i].first, &a[i].second);
    events.push_back(make_pair(a[i].second - k + 1, make_pair(a[i].first, 1)));
    events.push_back(make_pair(a[i].second + 1, make_pair(a[i].first, -1)));
  }
  sort(events.begin(), events.end());
  for (int i = 0; i < (int)((events).size()); i++) {
    int x = events[i].second.first;
    if (events[i].second.second == 1)
      now.insert(make_pair(x - k + 1, 1)), now.insert(make_pair(x + 1, -1));
    else
      now.erase(now.find(make_pair(x - k + 1, 1))),
          now.erase(now.find(make_pair(x + 1, -1)));
    if (i == (int)((events).size()) - 1) {
      assert(now.empty());
      continue;
    }
    if (events[i + 1].first == events[i].first) continue;
    int last = (int)2e9, cnt = 0;
    for (auto j : now) {
      if (last != int(2e9) && j.first != last && cnt) {
        ans[cnt] +=
            (j.first - last) * 1ll * (events[i + 1].first - events[i].first);
      }
      cnt += j.second;
      last = j.first;
    }
  }
  for (int i = 1; i <= n; i++)
    printf(
        "%lld"
        " ",
        ans[i]);
  return 0;
}
