#include <bits/stdc++.h>
using namespace std;
const int N = 300100;
inline int read() {
  int x = 0, f = 0, c = getchar();
  for (; c > '9' || c < '0'; f = c == '-', c = getchar())
    ;
  for (; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + c - '0';
  return f ? -x : x;
}
inline void write(long long x) {
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
struct cqz {
  int x, y, o;
} p[N];
inline bool operator<(cqz i, cqz j) { return i.x < j.x; }
long long ans[N];
int n, m, la[N], sm[N], yy[N], sy;
int main() {
  register int i, j, k, l, r, x, y;
  n = read();
  m = read();
  for (i = 1; i <= n; i++) {
    x = read();
    y = read();
    yy[i] = y;
    yy[i + n] = y - m;
    p[i] = (cqz){x, y, -1};
    p[i + n] = (cqz){x - m, y, 1};
  }
  sy = n + n;
  sort(p + 1, p + sy + 1);
  sort(yy + 1, yy + sy + 1);
  sy = unique(yy + 1, yy + sy + 1) - yy - 1;
  for (i = 1; i <= n + n; i++) {
    l = lower_bound(yy + 1, yy + sy + 1, p[i].y - m) - yy;
    r = lower_bound(yy + 1, yy + sy + 1, p[i].y) - yy;
    for (k = l + 1; k <= r; k++) {
      ans[sm[k]] += 1ll * (yy[k] - yy[k - 1]) * (p[i].x - la[k]);
      la[k] = p[i].x;
      sm[k] += p[i].o;
    }
  }
  for (i = 1; i <= n; i++) write(ans[i]), putchar(' ');
  return 0;
}
