#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0; i < n; i++)
using namespace std;
typedef pair<int,int> P;

int n, d;
vector<int> v[100];
int sum[100], ssum[100];

int main(){
	while(true){
		cin >> n >> d;
		if(n == 0 && d == 0) break;
		rep(i,100) v[i].clear();
		rep(i,100) sum[i] = 0;
		int M1 = 0, M2 = 0;
		rep(i,n){
			int m;
			cin >> m;
			rep(j,m){
				int tmp; cin >> tmp;
				v[i].push_back(tmp);
				sum[i] += tmp;
			}
		}
		if(n == 1){
			puts("Yes");
			continue;
		}
		rep(i,n) ssum[i] = sum[i];
		sort(ssum,ssum+n,greater<int>());
		M1 = ssum[0]; M2 = ssum[1];
		bool ok = true;
		while(true){
			bool end = true;
			rep(i,n){
				while(v[i].size() > 0 && sum[i]-v[i][v[i].size()-1] >= M1-d){
					sum[i] -= v[i][v[i].size()-1];
					v[i].pop_back();
					end = false;
				}
			}
			rep(i,n) ssum[i] = sum[i];
			sort(ssum,ssum+n,greater<int>());
			M1 = ssum[0]; M2 = ssum[1];
			if(M1 != M2){
				rep(i,n){
					if(sum[i] == M1){
						if(sum[i]-v[i][v[i].size()-1] >= M2-d){
							sum[i] -= v[i][v[i].size()-1];
							v[i].pop_back();
							end = false;
							M1 = max(M2,sum[i]);
							break;
						}
					}
				}
			}
			if(end) break;
		}
		rep(i,n) if(v[i].size() != 0) ok = false;
		if(ok) puts("Yes");
		else puts("No");
	}
}