#include #include using namespace std; using namespace atcoder; using mint = modint998244353; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector ans(n), per(n); iota(per.begin(), per.end(), 0); while (m--) { int k; cin >> k; vector ok(n); for (int i = 0; i < k; i++) { int u; cin >> u; u--; ok[u] = true; } stable_partition(per.begin(), per.end(), [&](int u) { return ok[u]; }); for (int cur = 0, i = 0; i < n; i++) { int nxt = cur + (i + 1 < n && make_pair(ans[per[i]], ok[per[i]]) != make_pair(ans[per[i + 1]], ok[per[i + 1]])); ans[per[i]] = cur; cur = nxt; } } cout << mint(2).pow(ans[per[n - 1]] + 1).val(); }