#include <bits/stdc++.h>
using namespace std;
const long long INF = 1LL << 55;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long qp(long long a, long long b) {
  long long ans = 1;
  do {
    if (b & 1) ans = 1ll * ans * a;
    a = 1ll * a * a;
  } while (b >>= 1);
  return ans;
}
long long qp(long long a, long long b, int mo) {
  long long ans = 1;
  do {
    if (b & 1) ans = 1ll * ans * a % mo;
    a = 1ll * a * a % mo;
  } while (b >>= 1);
  return ans;
}
template <typename T>
struct BIT {
  int n;
  vector<T> d;
  BIT(int n = 0) : n(n), d(n + 1) {}
  void add(int i, T x = 1) {
    for (i++; i <= n; i += i & -i) {
      d[i] += x;
    }
  }
  T sum(int i) {
    T x = 0;
    for (i++; i; i -= i & -i) {
      x += d[i];
    }
    return x;
  }
  long long inversion(vector<int> a) {
    long long ans = 0;
    for (int j = 0; j < a.size(); j++) {
      ans += j - sum(a[j]);
      add(a[j], 1);
    }
    return ans;
  }
};
int main(void) {
  long long n, m;
  cin >> n >> m;
  vector<pair<long long, pair<long long, long long>>> p(n);
  for (long long i = 0; i < n; i++) {
    long long a, b;
    cin >> a >> b;
    p[i] = make_pair(b - a + 1, make_pair(a, b));
  }
  sort((p).begin(), (p).end());
  long long k = 0;
  BIT<long long> bt(300030);
  for (long long i = 1; i <= m; i++) {
    long long ans = 0;
    while (p[k].first <= i) {
      bt.add(p[k].second.second + 1, -1);
      bt.add(p[k].second.first, 1);
      k++;
    }
    ans += n - k;
    for (long long j = 0; j <= m; j += i) {
      ans += bt.sum(j);
    }
    cout << ans << '\n';
  }
  cout << '\n';
  return 0;
}
