/*
TASK: store
LANG: C
*/
#include <stdio.h>
#define swap(a,b) a=a+b,b=a-b,a=a-b
#define MAXN 10100

int n, m;
int e[MAXN][2];
int ind[MAXN];
int br[MAXN]={0};
int k[MAXN];
int rib=0;
int used[MAXN]={0};
int q[MAXN];
int front, rear, empty;
int level[MAXN];
long ans[MAXN]={0};

void input()
{ int i, j, t;

 scanf("%d %d", &n, &m);
 for(i=1; i<=n; i++) {
   scanf("%d", &k[i]);
   scanf("%d", &br[i]);
   for(j=1; j<=br[i]; j++) {
     scanf("%d", &t);
     e[rib][0]=i;
     e[rib][1]=t;
     rib++;
   }
 }
 
return;
}

void ssort()
{ int i, j, g=rib, f=1;

  do {
   g=g*8/11;
   if(g<1) { g=1; f=0; }
   for(i=0; i<(rib-g); i++) {
     j=i+g;
     if(e[i][0]>e[j][0]) {
       swap(e[i][0], e[j][0]);
       swap(e[i][1], e[j][1]);
     }
   }
  }while(f);

 return;
}

void indd()
{ int i;

  ind[e[0][0]]=0;
  for(i=0; i<rib-1; i++) {
    if(e[i][0]!=e[i+1][0]) {
      ind[e[i+1][0]]=i+1;
    }
  }
  for(i=2; i<=n; i++) {
    if(ind[i]==0) ind[i]=-1;
  }

 return;
}

void initq()
{
 front=rear=empty=0;
return;
}

void push(int x)
{
  empty=1;
  if(rear==(MAXN-1)) rear=0;
   else rear++;
  q[rear]=x;
 return;
}

int pop()
{int res;

  res=q[front+1];
  if(front==MAXN-1) front=0;
   else front++;
  if(front==rear) empty=0;
return res;
}

void bfs(int x)
{ int i, w;

  initq; push(x);
  while(front!=rear && empty) {
    w=pop();
    for(i=ind[w]; i<(ind[w]+br[w]); i++) {
      push(e[i][1]);
      level[e[i][1]]=level[w]+1;
    }
  }
  for(i=1; i<=n; i++) {
    ans[i]=level[i];
  }

 return;
}

void dfs(int i, int prev)
{int j;

  used[i]=1;
  for(j=ind[i]; j!=-1 && j<(ind[i]+br[i]); j++) {
    if(!used[e[j][1]]) {
      dfs(e[j][1], i);
      if(k[e[j][1]]%m!=0) ans[i]+=(2*(k[e[j][1]]/m+1)-1)+ans[e[j][1]]-level[i];
       else ans[i]+=(2*(k[e[j][1]]/m)-1)+ans[e[j][1]]-level[i];
      k[i]+=k[e[j][1]];
      k[e[j][1]]=0;
    }
  }
  
}

void solve()
{
  ssort();
  indd();
  bfs(1);
  dfs(1, 0);
  printf("%ld\n", ans[1]);
 return;
}

int main()
{
  freopen("temp.in", "rt", stdin);
  freopen("temp.out", "wt", stdout);
  input();
  solve();
 return 0;
}

