#include<bits/stdc++.h>
#define MAXN 300005
#define LL long long
#define len(p) (n[p].r - n[p].l + 1)
using namespace std;

int N,M;
struct Node{
	int l,r;
	Node(int l=0, int r=0):l(l), r(r){}
	
	bool operator < (const Node& n1) const{
		return r-l < n1.r-n1.l;
	}
} n[MAXN];

//
int fw[MAXN];
int lbt(int x){
	return x & (-x);
}

int getsum(int x){
	int ans = 0;
	for(;x;x -= lbt(x)){
		ans += fw[x];
	}
	return ans;
}

void change(int x, int dv){
	for(;x<=M;x += lbt(x)){
		fw[x] += dv;
	}
}
//


int main(){
	ios::sync_with_stdio(0);
	
	cin>>N>>M;
	for(int i=1;i<=N;i++){
		cin>>n[i].l>>n[i].r;
	}
	
	sort(n+1, n+1+N);
	
	int p = 0;
	for(int d=1;d<=M;d++){
		while(p+1<=N && len(p+1)<d){
			p++;
			change(n[p].l, +1);
			change(n[p].r+1, -1);
		}
		
		int ans = 0;
		for(int j=d;j<=M;j+=d){
			ans += getsum(j);
		}
		cout<<ans + (N-p)<<endl;
	}
	
	
	return 0;
}