#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct Event {
  int t, L, R, on;
  Event(int t = 0, int L = 0, int R = 0, int on = 0)
      : t(t), L(L), R(R), on(on) {}
  bool operator<(const Event &rh) const { return t < rh.t; }
} E[maxn * 2];
int V[maxn * 2], cnt;
int Pre[maxn * 2], P[maxn * 2];
long long Ans[maxn];
int ID(int v) {
  int L = 1, R = cnt;
  while (L < R) {
    int mid = (L + R) >> 1;
    if (V[mid] < v)
      L = mid + 1;
    else
      R = mid;
  }
  return L;
}
int main() {
  int n, k;
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    static int x, y;
    scanf("%d%d", &x, &y);
    E[2 * i - 1] = Event(x - k + 1, y, y + k - 1, 1);
    E[2 * i] = Event(x + 1, y, y + k - 1, -1);
    V[++cnt] = y;
    V[++cnt] = y + k;
  }
  sort(V + 1, V + 1 + cnt);
  cnt = unique(V + 1, V + 1 + cnt) - V - 1;
  sort(E + 1, E + 1 + 2 * n);
  for (int i = 1; i <= 2 * n; i++) {
    int id = ID(E[i].L);
    for (; id < cnt && V[id] <= E[i].R; id++) {
      Ans[P[id]] += ((long long)(E[i].t - Pre[id])) * (V[id + 1] - V[id]);
      P[id] += E[i].on;
      Pre[id] = E[i].t;
    }
  }
  for (int i = 1; i <= n; i++) cout << Ans[i] << (i == n ? '\n' : ' ');
  return 0;
}
