#include <bits/stdc++.h>
using namespace std;
template <typename T>
T nextInt() {
  T x = 0, p = 1;
  char ch;
  do {
    ch = getchar();
  } while (ch <= ' ');
  if (ch == '-') {
    p = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + (ch - '0');
    ch = getchar();
  }
  return x * p;
}
const int maxN = (int)1e5 + 10;
const int maxK = (int)3e2 + 10;
const int INF = (int)1e9 + 5;
const int mod = (int)1e9 + 7;
const unsigned long long LLINF = (unsigned long long)1e18 + 5;
int n, k;
struct point {
  int x, y, i;
  point() {}
  point(int x, int y, int i) : x(x), y(y), i(i) {}
};
point a[maxN];
struct event {
  int x, l, r, d;
  event() {}
  event(int x, int l, int r, int d) : x(x), l(l), r(r), d(d) {}
  bool operator<(const event &rhs) const { return x < rhs.x; }
};
unsigned long long answer[maxN];
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> k;
  vector<event> events;
  vector<int> pos(n * k);
  int SZ = 0;
  for (int i = 0; i < n; ++i) {
    cin >> a[i].x >> a[i].y;
    a[i].i = i;
    events.push_back(event(a[i].x - k + 1, a[i].y - k + 1, a[i].y, +1));
    events.push_back(event(a[i].x + 1, a[i].y - k + 1, a[i].y, -1));
    for (int j = 0; j < k; ++j) {
      pos[SZ++] = a[i].y - j;
    }
  }
  sort(pos.begin(), pos.end());
  pos.erase(unique(pos.begin(), pos.end()), pos.end());
  for (auto &e : events) {
    e.l = lower_bound(pos.begin(), pos.end(), e.l) - pos.begin();
    e.r = lower_bound(pos.begin(), pos.end(), e.r) - pos.begin();
  }
  pos.clear();
  pos.shrink_to_fit();
  vector<int> last(maxN * maxK);
  vector<int> c(maxN * maxK);
  sort(events.begin(), events.end());
  for (auto e : events) {
    int l = e.l;
    int r = e.r;
    int d = e.d;
    for (int i = l; i <= r; ++i) {
      answer[c[i]] += e.x - last[i];
      last[i] = e.x;
      c[i] += d;
    }
  }
  for (int i = 1; i <= n; ++i) {
    cout << answer[i] << ' ';
  }
  return 0;
}
