#include <bits/stdc++.h>
using namespace std;
const int N = 300010, M = 100010;
#define lowbit(x) ((x) & (-(x)))
int v[M],n,m,s,ans,p=1;
struct data {
  int l,r;
  bool operator < (const data& x) const {
    return r - l < x.r - x.l;
  }
} dat[N];
void add(int p,int val) {
  for (; p <= s ; p += lowbit(p))
    v[p] += val;
}
int query(int p) {
  int res = 0;
  for (; p ; p -= lowbit(p))
    res += v[p];
  return res;
}
int main() {
  scanf("%d%d",&n,&m);
  for (int i = 1 ; i <= n ; ++ i)
    scanf("%d%d",&dat[i].l,&dat[i].r);
  sort(dat+1,dat+n+1);
  s = m+1;
  for (int i = 1 ; i <= m ; ++ i) {
    while (dat[p].r - dat[p].l + 1 < i && p <= n) {
      add(dat[p].l+1,1);
      add(dat[p].r+2,-1);
      p ++;
    }
    ans = n - p + 1;
    for (int j = 0 ; j <= m ; j += i)
      ans += query(j+1);
    printf("%d\n",ans);
  }
  return 0;
}
