#include #include #include #include using namespace std; int n; bool forbidden[11][11]; int perm[11]; int main() { freopen("diet.in","r",stdin); freopen("diet.out","w",stdout); int i,j; int k,a; int ctr=0; bool bad; memset(forbidden,false,sizeof(forbidden)); scanf("%d",&n); for (i=1;i<=n;i++) { scanf("%d",&k); for (j=1;j<=k;j++) { scanf("%d",&a); forbidden[a][i]=true; } } for (i=1;i<=n;i++) { perm[i]=i; } do { bad=false; for (i=1;i<=n;i++) { if (forbidden[i][ perm[i] ]) { bad=true; break; } } if (!bad) ctr++; }while( next_permutation(perm+1,perm+1+n) ); printf("%d\n",ctr); return 0; }