#include<iostream>
#include<algorithm>
#define Max 200000
using namespace std;
struct fighter
{ int id;
long long l, r;
}a[2 * Max + 5];
int n;
long long m;
int f[Max + 5][20];
long long g[Max + 5][20];
int res[Max + 5];
bool cmp(fighter& x, fighter& y)
{ return x.l < y.l;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{ scanf("%lld%lld", &a[i].l, &a[i].r);
if (a[i].r < a[i].l) a[i].r += m;
a[i].id = i;
}
sort(a + 1, a + n + 1, cmp);
for (int i = n + 1; i <= n * 2; i++)
a[i] = a[i - n],
a[i].l += m, a[i].r += m;
int p, q;
for (p = 1, q = 2; p <= n; p++)
{ while (a[q + 1].l <= a[p].r) q++;
f[p][0] = a[q].id;
g[p][0] = a[q].r - a[p].r;
}
for (int t = 1; t <= 18; t++)
for (int i = 1; i <= n; i++)
f[i][t] = f[f[i][t - 1]][t - 1],
g[i][t] = g[i][t - 1] +
g[f[i][t - 1]][t - 1];
for (int i = 1; i <= n; i++)
{ int now = i, ID = a[i].id;
long long remain = m - a[i].r + a[i].l;
int ans = 1;
for (int t = 18; t >= 0; t--)
if (g[now][t] <= remain)
remain -= g[now][t],
ans += 1 << t,
now = f[now][t];
if (remain > 0)
ans++;
res[ID] = ans;
}
for (int i = 1; i <= n; i++)
cout << res[i] << ' ';
return 0;
}