for(int i=1;i<=n;++i){
add(s,i,1);
add(i,s,0);
int p=read();
for(int j=1;j<=p;++j){
int bel=read();
add(i,bel+n,1);
add(bel+n,i,0);
}
}
cout<<3<<endl;
int res=0;
while(bfs()) res+=dinic(s,inf);
cout<<res<<endl;
if(res!=m) printf("No Solution!");
else{
for(int u=1+n;u<=n+k;++u){
printf("%lld: ",u-n);
for(int i=head[u];i;i=nxt[i]){
if(ver[i^1]!=s&&ver[i^1]!=t&&ver[i]!=s&&ver[i]!=t)
if(val[i]) printf("%lld ",ver[i]);
}
printf("\n");
}
}
