#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
#define gc getchar()
#define X first
#define Y second
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define rep0(i,a,b) for(int i=(a);i<(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
#define fore(i,V) for(int i=0;i<V.size();++i) 
#define lc x<<1
#define rc x<<1|1
#define ls x<<1,l,m
#define rs x<<1|1,m+1,r
inline int rd()
{
	int x=0,w=1;char c=gc;
	while(c!='-'&&!isdigit(c))c=gc;
	if(c=='-')w=-1,c=gc;
	while(isdigit(c))x=x*10+c-'0',c=gc;
	return x*w;
}
const int N=100005;
int n,m,a[N],c[N][2];
struct st{int l,r;}b[N][2],f[N][2];
inline st operator&(const st&a,const st&b){return (st){max(a.l,b.l),min(a.r,b.r)};}
inline bool chk(st a,int w){return a.l<=w&&w<=a.r;}
int main()
{
	n=rd();m=rd();
	rep(i,1,n){a[i]=rd();rep(o,0,1)b[i][o].l=rd(),b[i][o].r=rd();}
	f[n+1][0]=f[n+1][1]=(st){0,m};
	per(i,n,1)rep(o,0,1)
	{
		if(chk(b[i][o],a[i]))
		{
			if(chk(f[i+1][o^1],a[i]))f[i][o]=b[i][o^1],c[i][o]=o^1;
			else f[i][o]=f[i+1][o]&b[i][o^1],c[i][o]=o;
		}
		else f[i][o]=(st){m,0},c[i][o]=-1;
	}
	int o=-1;rep(i,0,1)if(f[1][i].l<=0&&0<=f[1][i].r)o=i;
	if(o==-1){puts("No");return 0;}else puts("Yes");
	rep(i,1,n)printf("%d ",o),o=c[i][o];return 0;
}
