#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rep1(i,n) for(int i=1;i<=(int)(n);i++)
#define all(c) c.begin(),c.end()
#define pb push_back
#define fs first
#define sc second
#define show(x) cout << #x << " = " << x << endl
#define chmin(x,y) x=min(x,y)
#define chmax(x,y) x=max(x,y)
using namespace std;
vector<int> vc[100];
typedef pair<int,int> P;
int main(){
	while(true){
		int N,D;
		cin>>N>>D;
		if(N==0) break;
		rep(i,N) vc[i].clear();
		set<P> st;
		set<P>::iterator it,it2;
		int m[100]={},s[100]={};
		rep(i,N) s[i]=0;
		rep(i,N){
			cin>>m[i];
			rep(j,m[i]){
				int c;
				cin>>c;
				s[i]+=c;
				vc[i].pb(c);
			}
			m[i]--;
			st.insert(P(s[i],i));
		}
		bool update=1;
		while(update){
			update=0;
			rep(i,N){
				if(m[i]<0) continue;
				it=st.end();
				it--;
				it2=st.lower_bound(P(s[i],i));
				if(it==it2) it--;
				if(it2->fs - vc[i][m[i]] +D >= it->fs ){
					update=1;
					st.erase(P(s[i],i));
					s[i]-=vc[i][m[i]];
					m[i]--;
					st.insert(P(s[i],i));
				}
			}
		}
		bool can=1;
		rep(i,N) if(m[i]>=0) can=0;
		if(can) puts("Yes");
		else puts("No");
	}
}