#include<bits/stdc++.h>
using namespace std;

const int N=310000;
int n,m,tr[N],Ans[N];
struct suv 
{
	int l,r;
	bool operator < (const suv& tp) const
	{
		return r-l<tp.r-tp.l;
	}
}p[N];

void Add(int x,int s)
{
	while(x<=m+1) tr[x]+=s, x+=(x&(-x));
}

int Query(int x)
{
	int ret=0;
	while(x) ret+=tr[x], x-=(x&(-x));
	return ret;
}

int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i) scanf("%d%d",&p[i].l,&p[i].r), ++p[i].l, ++p[i].r;
	sort(p+1,p+n+1);
	for(int i=1;i<=n;++i) Add(p[i].l,1), Add(p[i].r+1,-1);
	for(int d=m,cur=n;d>=1;--d)
	{
		while(p[cur].r-p[cur].l+1>=d && cur) Add(p[cur].l,-1), Add(p[cur--].r+1,1);
		Ans[d]=n-cur;// cout<<Ans[d]<<endl;
		for(int i=0;i*d<=m;++i)
			Ans[d] += Query(i*d+1);
	}
	for(int i=1;i<=m;++i) printf("%d\n",Ans[i]);
	return 0;
}