#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, K;
struct Event {
  int x, y, t;
  Event() {}
  Event(int x, int y, int t) : x(x), y(y), t(t) {}
  bool operator<(const Event &a) const { return x < a.x; }
} C[N + N];
int eventcount = 0;
int cor[N + N], corcount = 0;
int last[N + N], value[N + N];
long long ans[N];
inline int length(int p) { return cor[p + 1] - cor[p]; }
int main() {
  scanf("%d%d", &n, &K);
  for (int i = 0; i < n; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    C[eventcount++] = Event(x, y, 1);
    C[eventcount++] = Event(x + K, y, -1);
    cor[corcount++] = y + 1;
    cor[corcount++] = y - K + 1;
  }
  sort(C, C + eventcount);
  sort(cor, cor + corcount);
  corcount = unique(cor, cor + corcount) - cor;
  for (int i = 0; i < eventcount; ++i) {
    int l = C[i].y - K + 1, r = C[i].y;
    int p = lower_bound(cor, cor + corcount, l) - cor;
    while (cor[p] <= r) {
      ans[value[p]] += (long long)(C[i].x - last[p]) * length(p);
      value[p] += C[i].t;
      last[p] = C[i].x;
      ++p;
    }
  }
  for (int i = 1; i <= n; ++i) {
    printf("%I64d ", ans[i]);
  }
  return 0;
}
