#include <bits/stdc++.h>
using namespace std;
const int N = 100100, K = 305;
int n, k, val[2 * N];
long long ans[N];
pair<int, pair<int, int> > upd[2 * N];
map<int, int> id;
int xv[2 * N];
set<int> s;
int main() {
  if (fopen("D.in", "r")) freopen("D.in", "r", stdin);
  cin >> n >> k;
  for (int x, y, i = 0; i < n; i++) {
    scanf("%d %d", &x, &y);
    upd[2 * i] = (make_pair(y + k, make_pair(x - k + 1, 1)));
    upd[2 * i + 1] = (make_pair(y, make_pair(x - k + 1, -1)));
    s.insert(x - k + 1);
    s.insert(x + 1);
  }
  int idx = 0;
  for (typeof(s.begin()) it = s.begin(); it != s.end(); it++) {
    xv[idx++] = *it;
  }
  for (int i = 0; i < idx; i++) {
    id[xv[i]] = i;
  }
  sort(upd, upd + 2 * n);
  for (int i = 2 * n - 1; i >= 0; i--) {
    int curx = upd[i].second.first;
    int curi = id[curx];
    while (curi + 1 < idx && xv[curi] < upd[i].second.first + k) {
      long long ydist = upd[i].first - upd[0].first + 1;
      ans[val[curi]] -= ydist * (xv[curi + 1] - xv[curi]);
      val[curi] += upd[i].second.second;
      ans[val[curi]] += ydist * (xv[curi + 1] - xv[curi]);
      curi++;
    }
  }
  for (int i = 1; i <= n; i++) {
    printf("%I64d ", ans[i]);
  }
  return 0;
}
