#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<vector>

using namespace std;

const int MX=100111;
int n,m;
vector<int>q[MX];
vector<int>r[MX];
int ans[MX];
int c[MX];

#define lbt(x) ((x)&(-(x)))
inline void add(int x,int v){for(int i=x;i<=m;i+=lbt(i))c[i]+=v;}
inline int que(int x){int r=0;for(int i=x;i;i^=lbt(i))r+=c[i];return r;}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=2;i<=m;i++)
		for(int j=0;j<m;j+=i)
			q[j+1].push_back(j+i-1);
	for(int i=1;i<=m;i++)ans[i]=n;
	for(int i=1;i<=n;i++){
		static int L,R;
		scanf("%d%d",&L,&R);
		r[L].push_back(R);
	}
	for(int i=m;i;i--){
		for(vector<int>::iterator it=r[i].begin();it!=r[i].end();it++)
			add(*it,1);
		for(vector<int>::iterator it=q[i].begin();it!=q[i].end();it++)
			ans[(*it)-i+2]-=que(min(m,*it));
	}
	for(int i=1;i<=m;i++)
		printf("%d\n",ans[i]);
	return 0;
}
