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

#define ll long long
#define endl "\n"
#define all(aa) aa.begin(), aa.end()

vector<vector<pair<int, int>>> st(2, vector<pair<int, int>>(600005));
int seg[2][100005][2], dp[2][100005];

void build(bool i, int n, int s, int e){
	if(s==e){
		st[i][n]={seg[i][s][0], seg[i][s][1]};
		return;
	}
	int mid=(s+e)/2;
	build(i, n*2, s, mid); build(i, n*2+1, mid+1, e);
	st[i][n]={max(st[i][n*2].first, st[i][n*2+1].first), min(st[i][n*2].second, st[i][n*2+1].second)};
}

pair<int, int> query(bool i, int n, int s, int e, int l, int r){
	if(s>r || e<l) return {INT_MIN, INT_MAX};
	if(s>=l && e<=r) return st[i][n];
	int mid=(s+e)/2;
	auto tmpl=query(i, n*2, s, mid, l, r), tmpr=query(i, n*2+1, mid+1, e, l, r);
	return {max(tmpl.first, tmpr.first), min(tmpl.second, tmpr.second)};
}

int main(){
	int n, m;
	cin>>n>>m;

	vector<int>v(n+1);
	for(int i = 1; i <= n; i++) cin>>v[i]>>seg[0][i][0]>>seg[0][i][1]>>seg[1][i][0]>>seg[1][i][1];
	build(0, 1, 1, n); build(1, 1, 1, n);

	vector<pair<bool, int>>last(2, {1, n+1});

	for(int i = n; i >= 0; i--){
		for(int h = 0; h < 2; h++){
			auto[l, r]=query(h, 1, 1, n, i, min(n, last[!h].second));
			if(last[!h].first && v[i]<=r && v[i]>=l) dp[h][i]=1;
		}
		last[0].first &= (v[i]<=seg[0][i][1] && v[i]>=seg[0][i][0]);
		last[1].first &= (v[i]<=seg[1][i][1] && v[i]>=seg[1][i][0]);
		if(dp[0][i]) last[0]={1, i};
		if(dp[1][i]) last[1]={1, i};
	}


	if(dp[0][0] || dp[1][0]){
		cout<<"Yes"<<endl;

		bool cur;
		if(dp[0][0]) cur=1;
		else cur=0; 

		vector<bool>ans;
		for(int i=1; i<=n; i++){
			ans.push_back(cur);
			if(dp[cur][i]==1) cur=!cur;	

		}

		for(auto e:ans) cout<<e<<' ';
	}
	else cout<<"No"<<endl;
}