rt
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=4e5+1;
int n,m,cnt,f[N][21],ans[N];
struct line{int l,r,id;}a[N];
bool cmp(line a,line b){return a.l<b.l;}
signed main()
{
scanf("%lld%lld",&n,&m);
for(int i=1,l,r;i<=n;i++)
{
scanf("%lld%lld",&l,&r);
if(l>r)a[++cnt]=(line){l,r+m,i};
else a[++cnt]=(line){l,r,i},a[++cnt]=(line){l+m,r+m,0};
}
sort(a+1,a+1+cnt,cmp);
a[++cnt]=(line){a[cnt-1].r,0,0};
queue<int>q;
for(int i=1;i<=cnt;i++)
{
while(q.size()&&a[q.front()].r<a[i].l)
{
f[q.front()][0]=i-1;
q.pop();
}
q.push(i);
}
// f[cnt-1][0]=cnt;
// for(int i=1;i<=cnt;i++)printf("%d ",f[i][0]);
// puts("");
for(int j=0;j<20;j++)for(int i=1;i<=cnt;i++)f[i][j+1]=f[f[i][j]][j];
for(int i=1;i<=n;i++)
{
int sta=i,s=0;
for(int j=20;j>=0;j--)
{
if(a[f[sta][j]].r<a[i].l+m&&f[sta][j])
{
sta=f[sta][j];
s+=(1<<j);
}
}
ans[a[i].id]=s+2;
}
for(int i=1;i<=n;i++)printf("%lld ",ans[i]);
}