/*
TASK:store
LANG:C++
*/


#include <iostream>
#include <vector>
#include <stack>
using namespace std;
main() {
vector <int> z[10000];
int m,n,k,s,ss,u[10000],x,fl,S;
stack <int> st;
cin>>n>>m;
for(int i=1; i<n+1; i++){
        cin>>k;
        z[i].push_back(k);
        cin>>s;
        if (s!=0) for (int j=0; j<s; j++) {cin>>ss; z[i].push_back(ss);}
        }
z[0].push_back(0);        
for (int i=1; i<n; i++) u[i]=0;
st.push(1);
u[1]=0;
while (!st.empty()){
      x=st.top();
      cout<<"!"<<x<<"!";
      fl=0;
        for (int j=1; j<z[x].size(); j++)
            if (u[z[x][j]]==0) {st.push(z[x][j]); u[z[x][j]]=x; fl=1;}
        if (fl==0) {st.pop();
                   z[u[x]][0]=z[u[x]][0]+z[x][0];}
}
S=0;
for (int i=2; i<n+1; i++){
    k=z[i][0];
    if (k%m!=0) k=k/m+1; else k=k/m;
    k=k*2;
    S=S+k;
}
cout<<S;
}
