#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<ll> vl;
#define eb emplace_back
#define all0(x) begin(x), end(x)
#define all1(x) begin(x) + 1, end(x)
#define FOR(i, a, b) for(ll i=(a); i<=(b); i++)
#define ROF(i, a, b) for(ll i=(a); i>=(b); i--)
#define chkmax(x, a) x = max(x, a)
#define chkmin(x, a) x = min(x, a)
bool can[100005][2];
ll pre[100005][2];
void solve(){
    ll n, m; cin >> n >> m;
    set<pair<ll, ll>> lhs, rhs; // after ith operation, if i don't care lhs, the possible values of rhs that guarantee consistency.
    lhs.emplace(0, 0), rhs.emplace(0, 0);
    FOR(i, 1, n) {
        ll k; cin >> k;
        ll lu, lv, ru, rv; cin >> lu >> lv >> ru >> rv;
        // 1. takes left;
        if (lu <= k && k <= lv) {
            while (!rhs.empty() && rhs.begin()->first < ru) rhs.erase(rhs.begin());
            while (!rhs.empty() && rhs.rbegin()->first > rv) rhs.erase(*rhs.rbegin());
            if (!rhs.empty()) can[i][0] = true, pre[i][0] = rhs.begin()->second;
        }else{
            rhs.clear();
        }
        // 2. takes right;
        if (ru <= k && k <= rv) {
            while (!lhs.empty() && lhs.begin()->first < lu) lhs.erase(lhs.begin());
            while (!lhs.empty() && lhs.rbegin()->first > lv) lhs.erase(*lhs.rbegin());
            if (!lhs.empty()) can[i][1] = true, pre[i][1] = lhs.begin()->second;
        }else{
            lhs.clear();
        }
        // 3. update
        if (can[i][0]) lhs.emplace(k, i);
        if (can[i][1]) rhs.emplace(k, i);
    }
    cout << ((can[n][0] || can[n][1]) ? "YES" : "NO") << '\n';
    if ((can[n][0] || can[n][1])) {
        vl ans(n + 1);  FOR(i, 1, n) ans[i] = -1;
        ll tn = n;
        while (tn != 0) {
            if (ans[tn] != 1 && can[tn][0]) {
                FOR(t, pre[tn][0] + 1, tn) ans[t] = 0;
                ans[pre[tn][0]] = 1;
                tn = pre[tn][0];
            }else{
                FOR(t, pre[tn][1] + 1, tn) ans[t] = 1;
                ans[pre[tn][1]] = 0;
                tn = pre[tn][1];
            }
        }
        FOR(i, 1, n) cout << ans[i] << " ";
        cout << '\n';
    }
    cout.flush();
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    ll T = 1;
    // cin >> T;
    while (T--) solve();
    return 0;
}
