#include #include #include #include #include using namespace std; const int MAX_N = 1010; using bit = bitset; int main() { int n, m; cin >> n >> m; bit tmp; for (int i = 0; i < n; i++) tmp[i] = 1; vector B(n, tmp), A(m), A_c(m); for (int i = 0; i < m; i++) { int l; cin >> l; for (int j = 0; j < l; j++) { int a; cin >> a; a--; A[i][a] = 1; } A_c[i] = ~A[i]; for (int j = 0; j < n; j++) { if (A[i][j]) { B[j] &= A[i]; } else { B[j] &= A_c[i]; } } } unordered_set s; for (int i = 0; i < n; i++) s.insert(B[i]); cout << atcoder::pow_mod(2, s.size(), 998244353) << endl; }