//此程序使用了qt专属名称，请勿模仿。侵权必究！！！
//我真是太菜了啊……
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=410;
int n,m,fa[N],in[N],out[N];
bool v[N];
inline int read()
{
	int sum=0,flag=1; char c;
	for(;c<'0'||c>'9';c=getchar()) if(c=='-') flag=-1;
	for(;c>='0'&&c<='9';c=getchar()) sum=(sum<<3)+(sum<<1)+c-'0';
	return sum*flag;
}
inline int getfa(int x)
{
	if(fa[x]^x) fa[x]=getfa(fa[x]);
	return fa[x];
}
int main()
{
	n=read(),m=read();
	for(int i=1;i<=m*2;++i) fa[i]=i;
	for(int i=1;i<=n;++i)
	{
		int a=read(),b=read(),c=read(),d=read(),x,y;
		if(c) x=m-c; else x=m+a;
		if(d) y=m+d; else y=m-b;
		++in[y],++out[x];
		fa[getfa(x)]=getfa(y);
	}
	for(int i=1;i<=m;++i) if(in[i]<out[i]) {puts("NO"); return 0;}
	for(int i=m+1;i<=m*2;++i) if(in[i]>out[i]) {puts("NO"); return 0;}
	for(int i=1;i<=m*2;++i) v[getfa(i)]|=(in[i]^out[i])||(in[i]==0&&out[i]==0);
	for(int i=1;i<=m*2;++i) if((fa[i]==i)&&(!v[i])&&(i^m)) {puts("NO"); return 0;}
	puts("YES"); return 0; 
}