#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; int main() { freopen("diet.in", "r", stdin); freopen("diet.out", "w", stdout); int n; cin >> n; ll ways = 1; vector constr(n, n); for (size_t i = 0; i < n; i++) { int k; cin >> k; for (size_t j = 0; j < k; j++) { int z; cin >> z; constr[z - 1] --; } } int w = n; for (size_t k = 0; k < n; k++) { if (constr[k] <= 0) { ways = 0; continue; } ways *= std::min(constr[k],w); w--; } cout << ways << endl; //system("pause"); return 0; }