#include <algorithm>
#include <cstdio>
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
const int N = 1919810;
const int LOG = 22;
int n;
int m;
vector<pair<pair<int, int>, int>> nums (1);
int magic[N][LOG];
long long res[N];
int main () {
freopen ("flagplan.in", "r", stdin);
freopen ("flagplan.out", "w", stdout);
cin >> n >> m;
int l, r;
for (int i = 1; i <= n; i++) {
cin >> l >> r;
if (l > r) {
r += m;
}
nums.push_back(make_pair (make_pair (l, r), i));
}
sort (nums.begin() + 1, nums.end());
pair<pair<int, int>, int> p;
for (int i = 1; i <= n; i++) {
p = nums[i];
nums.push_back(make_pair (make_pair (p.first.first + m, p.first.second + m), p.second + n));
}
int j = 1;
for (int i = 1; i <= 2 * n; i++) {
while (j <= 2 * n && nums[j].first.first <= nums[i].first.second) {
j++;
}
magic[i][0] = j - 1;
}
for (int i = 1; i < LOG; i++) {
for (int j = 1; j <= 2 * n; j++) {
magic[j][i] = magic[magic[j][i - 1]][i - 1];
}
}
for (int i = 1; i <= n; i++) {
int limit = nums[i].first.first + m;
int cc = 0;
int t = i;
for (int j = LOG - 1; j >= 0; j--) {
if (magic[t][j] && nums[magic[t][j]].first.second < limit) {
cc += (1 << j);
t = magic[t][j];
}
}
res[nums[i].second] = cc + 2;
}
for (int i = 1; i <= n; i++) {
cout << res[i] << ' ';
}
return 0;
}