#include <algorithm>
#include <iostream>
using namespace std;
const int N = 2 * (2e5 + 10);
int n,m;
struct node
{
long long l,r;
int id;
}node[N];
bool cmp(const struct node &t1,const struct node &t2)
{
return t1.l < t2.l;
}
long long f[N][20];
long long lg[N];
void init()
{
int nxt = 1;
for (int i = 1 ; i <= n * 2 ; i ++)
{
while (nxt <= n * 2 && node[nxt].l <= node[i].r)
{
nxt ++;
}
f[i][0] = nxt - 1;
}
for (int i = 1 ; (i << 1) <= n ; i ++)
{
for (int j = 1 ; j <= n * 2 ; j ++)
{
f[j][i] = f[f[j][i - 1]][i - 1];
}
}
lg[1] = 0;
for (int i = 2 ; i <= m + 3 ; i ++)
{
lg[i] = lg[i / 2] + 1;
}
}
long long aans[N];
void solve(int x)
{
int len = node[x].l + m;
int now = x;
long long ans = 1;
for (int i = lg[m]; i >= 0 ; i --)
{
int p = f[now][i];
if (p && node[p].r < len)
{
ans += 1 << i;
now = p;
}
}
aans[node[x].id] = ans + 1;
return;
}
int main()
{
std :: cin >> n >> m;
for (int i = 1 ; i <= n ; i ++)
{
std :: cin >> node[i].l >> node[i].r;
node[i].id = i;
if (node[i].l > node[i].r)
{
node[i].r += m;
}
}
sort(node + 1,node + 1 + n,cmp);
for (int i = n + 1 ; i <= 2 * n ; i ++)
{
node[i].l = node[i - n].l + m;
node[i].r = node[i - n].r + m;
}
init();
for (int i = 1 ; i <= n ; i ++) solve(i);
for (int i = 1 ; i <= n ; i ++)
{
std :: cout << aans[i] << " ";
}
return 0;
}