#include <bits/stdc++.h>
using namespace std;
int n, m;
const int maxn = 200010;
int f[100005];
pair<int, pair<int, int> > tmp[1000006];
int d[3][maxn];
int sl = 0;
void update(int id, int u, int l) {
  while (u <= maxn - 5) d[id][u] += l, u += u & (-u);
}
int get(int id, int u) {
  int kq = 0;
  while (u > 0) kq += d[id][u], u -= u & (-u);
  return kq;
}
int main() {
  scanf("%d %d ", &n, &m);
  for (int i = 1; i <= n; ++i) {
    int a, b;
    scanf("%d %d ", &a, &b);
    update(0, a + 1, 1);
    update(0, b + 2, -1);
    tmp[++sl] = {b - a, {a, b}};
    update(1, a, 1);
    update(2, b + 1, 1);
  }
  sort(tmp + 1, tmp + sl + 1);
  for (int i = m; i >= 1; --i) {
    int k = get(0, i + 1);
    for (int j = 1; j * j <= i; ++j)
      if (i % j == 0) {
        f[j] += k;
        f[i / j] += k;
        if (j == i / j) f[j] -= k;
      }
  }
  int u = 1;
  for (int i = 1; i <= m; ++i) {
    while (u <= sl && tmp[u].first < i) {
      update(1, tmp[u].second.first, -1);
      update(2, tmp[u].second.second + 1, -1);
      ++u;
    }
    int k = 0;
    for (int j = 1; j <= m / i; ++j) {
      k += (get(2, (j + 1) * i) - get(2, i * j) - get(1, (j + 1) * i) +
            get(1, i * j)) *
           j;
    }
    printf("%d\n", f[i] - k + sl - u + 1);
  }
}
