#include <cstdio>
#include <algorithm>

#define lowbit(x) (x&(-x))

using std::sort;

const int maxn = 300010;

int n, m, c[maxn];

struct node {
	int l, r, len;
	bool operator < (const node &a) const {
		return len < a.len;
	}
}a[maxn];

void add(int i, int x) {
	while(i <= m) c[i] += x, i += lowbit(i);
}

int ask(int i) {
	int ret = 0;
	while(i > 0) ret += c[i], i -= lowbit(i);
	return ret;
}

int main() {
	scanf("%d %d", &n, &m);
	for(int i = 1;i <= n;i ++) {
		scanf("%d %d", &a[i].l, &a[i].r);
		a[i].r ++, a[i].len = a[i].r - a[i].l;
	}
	sort(a + 1, a + n + 1);
	for(int i = 1, j = 1, ans;i <= m;i ++) {
		while(j <= n && a[j].len < i) {
			add(a[j].l, 1);
			add(a[j].r, -1);
			j ++;
		}
		ans =  n - j + 1;
		for(int k = i;k <= m;k += i)
			ans += ask(k);
		printf("%d\n", ans);
	}
}