#include<bits/stdc++.h>
using namespace std;
const int N=4e5+10;
struct S
{
int x;
int y;
}a[N],w[N];
map<int,int> Map;
int n,m,tot;
int Next[2];
int f[N][30];
bool operator <(const S &q,const S &p)
{
if(q.x!=p.x)
return q.x<p.x;
else
return q.y<p.y;
}
void er()
{
for(int i=1;i<=tot;i++)
{
// cout<<"*"<<a[i].x<<' '<<a[i].y<<endl;
Map[a[i].y]=i;
}
for(int i=1;i<=tot;i++)
{
int l=i+1,r=tot,mid;
while(l<r)
{
mid=(l+r+1)>>1;
if(a[mid].x<=a[i].y)
{
l=mid;
}
else
{
r=mid-1;
}
}
Next[i]=l;
}
}
int main()
{
// std::ios::sync_with_stdio(false);
// cin.tie(0);
// cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
w[i].x=x;
w[i].y=y;
if(y<=x)
{
S W;
W.x=x;
W.y=y+m;
a[++tot]=W;
}
else
{
S W;
W.x=x;
W.y=y;
a[++tot]=W;
W.x=x+m;
W.y=y+m;
a[++tot]=W;
}
}
sort(a+1,a+1+tot);
er();
// cout<<"$$$"<<Next[2]<<endl;
for(int i=1;i<=tot;i++)
{
f[i][0]=a[i].y;
}
for(int j=1;j<=24;j++)
{
for(int i=1;i+(1<<j)-1<=n;i++)
{
f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
}
for(int i=1;i<=n;i++)
{
int ans=0;
int L=w[i].x,R=w[i].x+m;
// cout<<"R:"<<R<<endl;
int l=i+1,r=Next[i];
int k=log2(r-l+1);
int MAX;
do
{
// cout<<"max:"<<max(f[l][k],f[r-(1<<k)+1][k])<<endl;
MAX=Map[max(f[l][k],f[r-(1<<k)+1][k])];
l=MAX+1,r=Next[MAX];
// cout<<"r:"<<r<<endl;
k=log2(r-l+1);
// cout<<"MAX:"<<MAX<<endl;
// cout<<endl;
ans++;
}while(a[MAX].y<R);
cout<<ans+1<<' ';
}
return 0;
}