#include <bits/stdc++.h>
using namespace std;
const int N = 201010;
const int M = 30101010;
int n, k, i, j, a[N], b[N], c[N], tot;
long long ans[N];
int s[M], pos[M];
map<int, int> Map;
struct g {
  int x, y, typ;
} p[N];
bool cmp(g a, g b) { return a.y < b.y; }
int main() {
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; i++) {
    scanf("%d%d", &a[i], &b[i]);
    c[i] = a[i];
  }
  sort(c + 1, c + 1 + n);
  c[n + 1] = 2000000000;
  for (i = 1; i <= n; i++) {
    if (c[i] != c[i + 1]) Map[c[i]] = tot + 1;
    for (j = c[i]; j <= min(c[i] + k - 1, c[i + 1] - 1); j++) tot++;
  }
  for (i = 1; i <= n; i++) {
    p[2 * i - 1].x = Map[a[i]];
    p[2 * i - 1].y = b[i];
    p[2 * i - 1].typ = 1;
    p[2 * i].x = Map[a[i]];
    p[2 * i].y = b[i] + k;
    p[2 * i].typ = -1;
  }
  sort(p + 1, p + 1 + 2 * n, cmp);
  for (i = 1; i <= 2 * n; i++)
    for (j = p[i].x; j <= p[i].x + k - 1; j++) {
      if (s[j]) ans[s[j]] += p[i].y - pos[j];
      s[j] += p[i].typ;
      pos[j] = p[i].y;
    }
  for (i = 1; i <= n; i++) printf("%I64d ", ans[i]);
}
