#include <bits/stdc++.h>
using namespace std; 

#define pii pair<int, int>
#define f first
#define s second

const int mx = 1e5+5; 

int n, m, k[mx]; pii cL[mx], cR[mx], boundL, boundR; bool rl[mx], lr[mx], okL, okR; 

int main(){
    cin >> n >> m; n++; 
    for (int i = 1; i < n; i++) cin >> k[i] >> cL[i].f >> cL[i].s >> cR[i].f >> cR[i].s;
    auto check = [&](int l, int r, int i){ 
        return (cL[i].f <= l and l <= cL[i].s) and (cR[i].f <= r and r <= cR[i].s);
    };auto updBound = [](pii &bound, pii range){
        bound.f = max(bound.f, range.f); bound.s = min(bound.s, range.s);
    };auto updOk = [](bool &ok, int val, pii range){ 
        ok = (ok and (range.f <= val and val <= range.s)); 
    };updOk(okR = 1, k[n-1], cR[n-1]); updOk(okL = 1, k[n-1], cL[n-1]);
    k[0] = 0; boundL = cL[n-1]; boundR = cR[n-1]; 
    for (int i = n-1; i > 0; i--){
        pii bR = boundR, bL = boundL; bool gR = okR, gL = okL;
        if (check(k[i-1], k[i], i)) //LR
            if (gR and (bL.f <= k[i-1] and k[i-1] <= bL.s))
                lr[i] = 1, boundR = {0, 2e9}, okL = 1;
        if (check(k[i], k[i-1], i)) //RL
            if (gL and (bR.f <= k[i-1] and k[i-1] <= bR.s))
                rl[i] = 1, boundL = {0, 2e9}, okR = 1;
        updBound(boundL, cL[i-1]); updBound(boundR, cR[i-1]);
        updOk(okL, k[i-1], cL[i-1]); updOk(okR, k[i-1], cR[i-1]);
    }if (!rl[1] and !lr[1]) cout<<"No"<<endl;
    else{
        cout<<"Yes"<<endl; int curr = rl[1]?0:1; 
        for (int i = 1; i < n; i++){
            if ((curr == 0 and lr[i]) or (curr == 1 and rl[i])) curr ^= 1;
            cout<<curr<<" ";
        }
    }
}
