#include<bits/stdc++.h>
using namespace std;
//#include <ext/pb_ds/assoc_container.hpp>
//using namespace __gnu_pbds;
//typedef tree<int,null_type,less<int>,rb_tree_tag,
//tree_order_statistics_node_update> indexed_set;
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define pii pair<int,int>
#define pll pair<long long , long long>
#define vi vector<int>
#define vpii vector<pii>
#define SZ(x) ((int)(x.size()))
#define fi first
#define se second
#define FOR(i,n) for(int (i)=0;(i)<(n);++(i))
#define FORI(i,n) for(int (i)=1;(i)<=(n);++(i))
#define IN(x,y) ((y).find((x))!=(y).end())
#define ALL(t) t.begin(),t.end()
#define FOREACH(i,t) for (typeof(t.begin()) i=t.begin(); i!=t.end(); i++)
#define REP(i,a,b) for(int (i)=(a);(i)<=(b);++i)
#define REPD(i,a,b) for(int (i)=(a); (i)>=(b);--i)
#define REMAX(a,b) (a)=max((a),(b));
#define REMIN(a,b) (a)=min((a),(b));
#define DBG cerr << "debug here" << endl;
#define DBGV(vari) cerr << #vari<< " = "<< (vari) <<endl;
#define nn <<' '<<
#define ln <<'\n'
#define io_faster ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//template <typename T>
//inline void read(T& x){
// bool Neg = false;
// char c;
// for (c = getchar(); c < '0' | c > '9'; c = getchar())
// if (c == '-') Neg = !Neg;
// x = c - '0';
// for (c = getchar(); c >= '0' && c <= '9'; c = getchar())
// x = x * 10 + c - '0';
// if (Neg) x = -x;
//}
//template <typename T>
//inline void write(T x)
//{
// if (x < 0)
// {
// putchar('-'); x = -x;
// }
// T p = 1;
// for (T temp = x / 10; temp > 0; temp /= 10) p *= 10;
// for (; p > 0; x %= p, p /= 10) putchar(x / p + '0');
//}
#define PROB "piepie"
void file(){
if(fopen(PROB".in", "r")){
freopen(PROB".in","r",stdin);
freopen(PROB".out","w",stdout);
}
}
void sinh_(){
// srand(time(0));
// freopen(PROB".inp" , "w" , stdout);
// int n;
}
typedef long long ll;
const int INF = 1e9;
const int N = 1e5 + 5;
int n , d , dis[2*N];
int a[2*N] , b[2*N];
struct cmpA{
bool operator()(const int &x , const int &y) const{
return b[x] > b[y];
}
};
struct cmpB{
bool operator() (const int &x , const int &y) const{
return a[x] > a[y];
}
};
multiset<int, cmpA> sA;
multiset<int, cmpB> sB;
deque<int> que;
void readip(){
cin >> n >> d;
FOR(i , 2*n){
cin >> a[i] >> b[i];
dis[i] = -1;
}
FOR(i , n){
if (b[i] == 0)
dis[i] = 1, que.eb(i);
else sA.insert(i);
if (a[i + n] == 0)
dis[i + n] = 1, que.eb(i + n);
else sB.insert(i + n);
}
}
void solve(){
while(!que.empty()){
int u = que.front(); que.pop_front();
if (u < n){
while(1){
auto t = sB.lower_bound(u);
if (t == sB.end() || a[*t] + d < a[u]) break;
dis[*t] = dis[u] + 1;
que.eb(*t); sB.erase(t);
}
}
else{
while(1){
auto t = sA.lower_bound(u);
if (t == sA.end() || b[*t] + d < b[u]) break;
dis[*t] = dis[u] + 1;
que.eb(*t); sA.erase(t);
}
}
}
FOR(i , n) cout << dis[i] ln;
}
int main(){
sinh_();
io_faster
file();
int t = 1;
// cin >> t;
while (t--){
readip();
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy8jaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+Ci8vdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7Ci8vdHlwZWRlZiB0cmVlPGludCxudWxsX3R5cGUsbGVzczxpbnQ+LHJiX3RyZWVfdGFnLAovL3RyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gaW5kZXhlZF9zZXQ7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBwbGwgcGFpcjxsb25nIGxvbmcgLCBsb25nIGxvbmc+CiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSB2cGlpIHZlY3RvcjxwaWk+CiNkZWZpbmUgU1ooeCkgKChpbnQpKHguc2l6ZSgpKSkKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIEZPUihpLG4pIGZvcihpbnQgKGkpPTA7KGkpPChuKTsrKyhpKSkKI2RlZmluZSBGT1JJKGksbikgZm9yKGludCAoaSk9MTsoaSk8PShuKTsrKyhpKSkKI2RlZmluZSBJTih4LHkpICgoeSkuZmluZCgoeCkpIT0oeSkuZW5kKCkpCiNkZWZpbmUgQUxMKHQpIHQuYmVnaW4oKSx0LmVuZCgpCiNkZWZpbmUgRk9SRUFDSChpLHQpIGZvciAodHlwZW9mKHQuYmVnaW4oKSkgaT10LmJlZ2luKCk7IGkhPXQuZW5kKCk7IGkrKykKI2RlZmluZSBSRVAoaSxhLGIpIGZvcihpbnQgKGkpPShhKTsoaSk8PShiKTsrK2kpCiNkZWZpbmUgUkVQRChpLGEsYikgZm9yKGludCAoaSk9KGEpOyAoaSk+PShiKTstLWkpCiNkZWZpbmUgUkVNQVgoYSxiKSAoYSk9bWF4KChhKSwoYikpOwojZGVmaW5lIFJFTUlOKGEsYikgKGEpPW1pbigoYSksKGIpKTsKI2RlZmluZSBEQkcgY2VyciA8PCAiZGVidWcgaGVyZSIgPDwgZW5kbDsKI2RlZmluZSBEQkdWKHZhcmkpIGNlcnIgPDwgI3Zhcmk8PCAiID0gIjw8ICh2YXJpKSA8PGVuZGw7CiNkZWZpbmUgbm4gPDwnICc8PAojZGVmaW5lIGxuIDw8J1xuJwojZGVmaW5lIGlvX2Zhc3RlciBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKDApO2NvdXQudGllKDApOwovL3RlbXBsYXRlIDx0eXBlbmFtZSBUPgovL2lubGluZSB2b2lkIHJlYWQoVCYgeCl7Ci8vICAgIGJvb2wgTmVnID0gZmFsc2U7Ci8vICAgIGNoYXIgYzsKLy8gICAgZm9yIChjID0gZ2V0Y2hhcigpOyBjIDwgJzAnIHwgYyA+ICc5JzsgYyA9IGdldGNoYXIoKSkKLy8gICAgICAgIGlmIChjID09ICctJykgTmVnID0gIU5lZzsKLy8gICAgeCA9IGMgLSAnMCc7Ci8vICAgIGZvciAoYyA9IGdldGNoYXIoKTsgYyA+PSAnMCcgJiYgYyA8PSAnOSc7IGMgPSBnZXRjaGFyKCkpCi8vICAgICAgICB4ID0geCAqIDEwICsgYyAtICcwJzsKLy8gICAgaWYgKE5lZykgeCA9IC14OwovL30KCi8vdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci8vaW5saW5lIHZvaWQgd3JpdGUoVCB4KQovL3sKLy8gICAgaWYgKHggPCAwKQovLyAgICB7Ci8vICAgICAgICBwdXRjaGFyKCctJyk7IHggPSAteDsKLy8gICAgfQovLyAgICBUIHAgPSAxOwovLyAgICBmb3IgKFQgdGVtcCA9IHggLyAxMDsgdGVtcCA+IDA7IHRlbXAgLz0gMTApIHAgKj0gMTA7Ci8vICAgIGZvciAoOyBwID4gMDsgeCAlPSBwLCBwIC89IDEwKSBwdXRjaGFyKHggLyBwICsgJzAnKTsKLy99CgojZGVmaW5lIFBST0IgInBpZXBpZSIKdm9pZCBmaWxlKCl7CiAgICBpZihmb3BlbihQUk9CIi5pbiIsICJyIikpewogICAgICAgIGZyZW9wZW4oUFJPQiIuaW4iLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3BlbihQUk9CIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQp9CnZvaWQgc2luaF8oKXsKLy8gICAgc3JhbmQodGltZSgwKSk7Ci8vICAgIGZyZW9wZW4oUFJPQiIuaW5wIiAsICJ3IiAsIHN0ZG91dCk7Ci8vICAgIGludCBuOwp9CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgSU5GID0gMWU5Owpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmludCBuICwgZCAsIGRpc1syKk5dOwppbnQgYVsyKk5dICwgYlsyKk5dOwpzdHJ1Y3QgY21wQXsKICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBpbnQgJnggLCBjb25zdCBpbnQgJnkpIGNvbnN0ewogICAgICAgIHJldHVybiBiW3hdID4gYlt5XTsKICAgIH0KfTsKc3RydWN0IGNtcEJ7CiAgICBib29sIG9wZXJhdG9yKCkgKGNvbnN0IGludCAmeCAsIGNvbnN0IGludCAmeSkgY29uc3R7CiAgICAgICAgcmV0dXJuIGFbeF0gPiBhW3ldOwogICAgfQp9OwptdWx0aXNldDxpbnQsIGNtcEE+IHNBOwptdWx0aXNldDxpbnQsIGNtcEI+IHNCOwpkZXF1ZTxpbnQ+IHF1ZTsKdm9pZCByZWFkaXAoKXsKICAgIGNpbiA+PiBuID4+IGQ7CiAgICBGT1IoaSAsIDIqbil7CiAgICAgICAgY2luID4+IGFbaV0gPj4gYltpXTsKICAgICAgICBkaXNbaV0gPSAtMTsKICAgIH0KICAgIEZPUihpICwgbil7CiAgICAgICAgaWYgKGJbaV0gPT0gMCkKICAgICAgICAgICAgZGlzW2ldID0gMSwgcXVlLmViKGkpOwogICAgICAgIGVsc2Ugc0EuaW5zZXJ0KGkpOwogICAgICAgIGlmIChhW2kgKyBuXSA9PSAwKQogICAgICAgICAgICBkaXNbaSArIG5dID0gMSwgcXVlLmViKGkgKyBuKTsKICAgICAgICBlbHNlIHNCLmluc2VydChpICsgbik7CiAgICB9Cn0KCnZvaWQgc29sdmUoKXsKICAgIHdoaWxlKCFxdWUuZW1wdHkoKSl7CiAgICAgICAgaW50IHUgPSBxdWUuZnJvbnQoKTsgcXVlLnBvcF9mcm9udCgpOwogICAgICAgIGlmICh1IDwgbil7CiAgICAgICAgICAgIHdoaWxlKDEpewogICAgICAgICAgICAgICAgYXV0byB0ID0gc0IubG93ZXJfYm91bmQodSk7CiAgICAgICAgICAgICAgICBpZiAodCA9PSBzQi5lbmQoKSB8fCBhWyp0XSArIGQgPCBhW3VdKSBicmVhazsKICAgICAgICAgICAgICAgIGRpc1sqdF0gPSBkaXNbdV0gKyAxOwogICAgICAgICAgICAgICAgcXVlLmViKCp0KTsgc0IuZXJhc2UodCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgd2hpbGUoMSl7CiAgICAgICAgICAgICAgICBhdXRvIHQgPSBzQS5sb3dlcl9ib3VuZCh1KTsKICAgICAgICAgICAgICAgIGlmICh0ID09IHNBLmVuZCgpIHx8IGJbKnRdICsgZCA8IGJbdV0pIGJyZWFrOwogICAgICAgICAgICAgICAgZGlzWyp0XSA9IGRpc1t1XSArIDE7CiAgICAgICAgICAgICAgICBxdWUuZWIoKnQpOyBzQS5lcmFzZSh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIEZPUihpICwgbikgY291dCA8PCBkaXNbaV0gbG47Cn0KCmludCBtYWluKCl7CiAgICBzaW5oXygpOwogICAgaW9fZmFzdGVyCiAgICBmaWxlKCk7CiAgICBpbnQgdCA9IDE7Ci8vICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSl7CiAgICAgICAgcmVhZGlwKCk7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQo=