#include <bits/stdc++.h>
using namespace std;
struct FenwickTree2D {
  static const int SIZE = 1 << 17;
  int n, m, tree[SIZE + 1];
  void ft_add(int ft[], int mm, int i, int value) {
    for (; i < mm; i |= i + 1) ft[i] += value;
  }
  int ft_sum(int ft[], int i) {
    int s = 0;
    for (; i >= 0; i = (i & i + 1) - 1) s += ft[i];
    return s;
  }

 public:
  FenwickTree2D(int n_, int m_) {
    n = n_;
    m = m_;
    for (int i = 0; i < n * m + 1; i++) tree[i] = 0;
  }
  void add(int i, int j, int value) {
    for (; i < n; i |= i + 1) ft_add(tree + i * m, m, j, value);
  }
  int sum(int i, int j) {
    int s = 0;
    for (; i >= 0; i = (i & i + 1) - 1) s += ft_sum(tree + i * m, j);
    return s;
  }
};
int main() {
  int N, M;
  cin >> N >> M;
  FenwickTree2D ft(M + 5, M + 5);
  for (int i = (0); i < (int)(N); i++) {
    int l, r;
    cin >> l >> r;
    ft.add(l, r, 1);
  }
  for (int d = 1; d <= M; d++) {
    int ret = 0;
    for (int p = 1; d * (long long)p <= M; p++) {
      int X = d * (p - 1);
      int Y = d * p;
      ret += ft.sum(Y, M + 1) - ft.sum(Y, Y - 1) - ft.sum(X, M + 1) +
             ft.sum(X, Y - 1);
    }
    cout << ret << endl;
  }
  return 0;
}
