#include <bits/stdc++.h>
using namespace std;
struct node {
  int l, r;
  bool operator<(const node a) const { return r - l < a.r - a.l; }
} p[100010];
int tree[100010 << 2];
inline int lowbit(int x) { return x & (-x); }
void insert(int u, int v) {
  for (; u < 100010 << 2; u += lowbit(u)) tree[u] += v;
}
int answer(int u) {
  int ans = 0;
  for (; u; u -= lowbit(u)) ans += tree[u];
  return ans;
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++)
    scanf("%d%d", &p[i].l, &p[i].r), p[i].l++, p[i].r++;
  sort(p + 1, p + n + 1);
  int u = 1;
  for (int i = 1; i <= m; i++) {
    while (p[u].r - p[u].l + 1 < i && u <= n) {
      insert(p[u].l, 1);
      insert(p[u].r + 1, -1);
      u++;
    }
    int ans = n - u + 1;
    for (int j = 0; j <= m; j += i) ans += answer(j + 1);
    printf("%d\n", ans);
  }
  return 0;
}
