#include <bits/stdc++.h>
using namespace std;
void ga(int N, int *A) {
  for (int i(0); i < N; i++) scanf("%d", A + i);
}
struct ev {
  int x, B, U, o;
  bool operator<(const ev &r) const { return x < r.x; }
} E[(100001) * 2];
pair<int, int> p[(100001)];
int N, K, L = 1, t[] = {-1, 1}, I, J;
vector<int> C;
long long O[(100001)];
int main(void) {
  scanf("%d%d", &N, &K);
  for (int i(0); i < N; i++) scanf("%d%d", &p[i].first, &p[i].second);
  sort(p, p + N), C.push_back(-2e9);
  for (int i(0); i < N; i++)
    for (int k(p[i].first - K + 1); k < p[i].first + 1; k++)
      if (C[L - 1] < k) C.push_back(k), ++L;
  for (int i(0); i < N; i++)
    E[i] = {p[i].second - K + 1,
            int(lower_bound(C.begin(), C.end(), p[i].first - K + 1) -
                C.begin() - 1),
            int(lower_bound(C.begin(), C.end(), p[i].first + 1) - C.begin() -
                1),
            1},
    E[N + i] = {
        p[i].second + 1,
        int(lower_bound(C.begin(), C.end(), p[i].first - K + 1) - C.begin() -
            1),
        int(lower_bound(C.begin(), C.end(), p[i].first + 1) - C.begin() - 1),
        0};
  sort(E, E + 2 * N);
  for (auto &h : C) h = 0;
  vector<int> X(L, -2e9);
  for (int i(0); i < 2 * N; i++)
    for (int k(E[i].B); k < E[i].U; k++) {
      if (X[k] ^ int(1e9 + 666) && C[k]) O[C[k] - 1] += E[i].x - X[k];
      C[k] += t[E[i].o], X[k] = E[i].x;
    }
  for (int i(0); i < N; i++) printf("%lld%c", O[i], i + 1 == N ? 10 : 32);
  return 0;
}
