#include <bits/stdc++.h>
using namespace std;
const int N=300005;
int n,m;
struct BIT{
	int c[N];
	inline int lowbit(int x){return x&(-x);};
	inline void update(int x,int y){
		for (;x<=m+2;x+=lowbit(x)) c[x]+=y;
	}
	inline int query(int x){
		int ans=0;for (;x;x-=lowbit(x)) ans+=c[x];return ans;
	}
}T;
struct Node{
	int l,r;
}a[N];
inline bool cmp(Node a,Node b){
	return a.r-a.l<b.r-b.l;
}
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].l+=2,a[i].r+=2;
	sort(a+1,a+n+1,cmp);
	for (int d=1,now=1;d<=m;d++){
		for (;now<=n;now++)
			if (a[now].r-a[now].l+1<d)
				T.update(a[now].l,1),T.update(a[now].r+1,-1);
			else break;
		int ans=n-now+1;
		for (int i=0;i<=m;i+=d)
			ans+=T.query(i+2);
		printf ("%d\n",ans);
	}
	return 0;
}