#include <bits/stdc++.h>
using namespace std;
struct Ahri {
  int x, y, z;
  Ahri(int a = 0, int b = 0, int c = 0) : x(a), y(b), z(c) {}
  void read() { scanf("%d%d", &x, &y); }
  bool operator<(const Ahri &A) const { return x < A.x; }
} p[101000 << 1];
long long ans[101000];
map<int, int> l;
int n, m, s[30001000], t[30001000];
int main() {
  int i, j, k;
  scanf("%d%d", &n, &m);
  for (i = 0; i < n; i++) p[i].read();
  sort(p, p + n);
  l[p[0].x] = k = 1;
  for (i = 1; i < n; i++) {
    k += min(m, p[i].x - p[i - 1].x);
    if (p[i].x != p[i - 1].x) l[p[i].x] = k;
  }
  for (i = n - 1; i + 1; i--) {
    p[i << 1 | 1] = Ahri(p[i].y, l[p[i].x], 1);
    p[i << 1] = Ahri(p[i].y + m, l[p[i].x], -1);
  }
  sort(p, p + 2 * n);
  for (i = 0; i < 2 * n; i++) {
    for (j = p[i].y; j < p[i].y + m; j++) {
      if (s[j]) ans[s[j]] += p[i].x - t[j];
      s[j] += p[i].z;
      t[j] = p[i].x;
    }
  }
  for (i = 1; i <= n; i++) cout << ans[i] << ' ';
  puts("");
  return 0;
}
