#include<bits/stdc++.h>
using namespace std;
#define MAX_N 105
int n,N,d;
vector<int> t[MAX_N];
int m[MAX_N];
int f[MAX_N];

bool check(int x,int y){
  if(t[x].size()>t[y].size())swap(x,y);
  vector<int> &X=t[x];
  vector<int> &Y=t[y];
  int j=0;
  /*
  cout<<endl;
  cout<<x<<' '<<y<<endl;
  for(int i=0;i<(int)X.size();i++)cout<<X[i]<<' ';cout<<endl;
  for(int i=0;i<(int)Y.size();i++)cout<<Y[i]<<' ';cout<<endl;
  cout<<endl;
  */
  for(int i=0;i<(int)X.size();i++){
    if(abs(X[i]-Y[j]) > d)return false;
    while(j+1<=m[y]&& abs(X[i]-Y[j+1]) <= d)j++;
  }
  return (Y[j]==0);
}

bool solve(){
  for(int i=0;i<n-1;i++)
    for(int j=i+1;j<n;j++)
      if(!check(i,j))return false;
  return true;
}

void init(){

  for(int i=0;i<MAX_N;i++){
    t[i].clear();

  }
}

int main(){
  while(1){
    cin>>n>>d;
    if(n==0&&d==0)break;
    init();
    for(int i=0;i<n;i++){
      cin>>m[i];
      t[i].resize(m[i]);
      for(int j=0;j<m[i];j++){
	cin>>t[i][j];
      }
      reverse(t[i].begin(),t[i].end());
      for(int j=m[i]-2;j>=0;j--)t[i][j]+=t[i][j+1];
      t[i].push_back(0);
    }
    cout<<(solve()?"Yes":"No")<<endl;
  }
  return 0;
}