#include<bits/stdc++.h>
const int N=3e5+10;
using namespace std;
int n,m,c[N],ans;
struct Interval{
	int l,r;
	bool operator < (const Interval &x)const{return l>x.l;}
}a[N];
vector<int>G[N];
inline int lowbit(int x){return x&(-x);}
inline void add(int x,int val){for(int i=x;i<=m;i+=lowbit(i))c[i]+=val;}
inline int ask(int x){
	int ans=0;
	for(int i=x;i;i-=lowbit(i))ans+=c[i];
	return ans;
}
inline int read(){
	int f=1,x=0;char ch;
	do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
	do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
	return f*x;
}
int main(){
	n=read();m=read();
	for(int i=1;i<=n;i++)a[i].l=read(),a[i].r=read(),G[a[i].r-a[i].l+1].push_back(a[i].l);
	int cur=n;
	for(int i=1;i<=m;i++){
		cur-=G[i-1].size();ans=cur;
		for(int j=0;j<G[i-1].size();j++)add(G[i-1][j],1),add(G[i-1][j]+i-1,-1);
		for(int j=i;j<=m;j+=i)ans+=ask(j);
		printf("%d\n",ans);
	}
}