# include<bits/stdc++.h> using namespace std; # define ll long long # define inf 10000000000 # define N 2005 # define M 2000005 int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-') f=-1; ch=getchar();} while(ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();} return x*f; } int n,m; int h[N],s[N],q[N]; int u[M],d[M],L[M],R[M],C[M],X[M]; void del(int c) //delete ROW C { ___(1)___; ___(2)___; for(int i=d[c]; i!=c; i=d[i]) for(int j=R[i]; j!=i; j=R[j]) u[d[j]]= u[j],d[u[j]]=d[j],s[C[j]]--; } void add(int c) { L[R[c]]= R[L[c]]=c; for(int i=u[c]; i!=c; i=u[i]) for(int j=L[i]; j!=i; j=L[j]) u[d[j]]= d[u[j]]=j,s[C[j]]++; } void link(int r,int c) { static int size=0;size++; X[size]=r;C[size]=c; s[c]++; d[size]= d[c]; u[size]=c; u[d[size]]=size; d[u[size]]=size; if(h[r]==-1) h[r]=L[size]=R[size]=size; else { R[size]=R[h[r]]; L[size]= h[r]; L[R[size]]=size; R[L[size]]= size; } } bool dance(int k) { if(R[0]=0) { printf("%d" ,k); for(int i=1; i<=k; i++) printf(" %d",X[q[i]]); puts(""); return 1; } int mn=inf,c; for(int i= R[0]; i; i=R[i]) if(s[i]<mn) mn=s[i],c=i; ___(3)___; for(int i=d[c]; i!=c; i=d[i]) { q[k+1]=i; for(int j=R[i]; j!=i; j=R[j]) ___(4)___; if(dance(k+1)) return 1; for(int j=L[i]; j!=i; j=L[j]) ___(5)___; } add(c); return 0; } int main() { while(scanf("%d%d",&n,&m)!=EOF) { for(int i=0; i<=m; i++) { d[i]=u[i]=i; L[i+1]=i;R[i]=i+1; s[i]=0; } R[m]=0; size=m; int x,y; for(int i=1; i<=n; i++) { h[i]=-1; x=read(); while(x--) { y=read(); link(i,y); } } if(!dance(0)) puts("NO"); } return 0; }