#include <bits/stdc++.h>
using namespace std;
const int maxn = 55, mo = 1e9 + 7;
int N, M, f[maxn * 2][maxn][maxn];
bool conn[maxn][maxn];
deque<int> E[maxn][maxn], NOW, NEW;
set<deque<int> > BEG, EXP, PRE;
inline void add(int &a, int b) { a += b; }
void Expand(set<deque<int> > &S, bool pre, bool exp) {
  while (true) {
    NOW = NEW;
    NEW.clear();
    for (int i = 0; i < NOW.size() - 1; i++) {
      if (!conn[NOW[i]][NOW[i + 1]]) return;
      for (deque<int>::iterator j = E[NOW[i]][NOW[i + 1]].begin();
           j != E[NOW[i]][NOW[i + 1]].end(); j++)
        NEW.push_back(*j);
    }
    if (pre) NEW.push_front(NOW.front());
    if (exp) NEW.push_back(NOW.back());
    if (NEW.size() <= 1 || NEW.size() > 2 * N) return;
    if (NEW.size() == NOW.size() && NOW == NEW) {
      S.insert(NOW);
      return;
    }
  }
}
int main() {
  scanf("%d%d", &N, &M);
  for (int i = 1; i <= M; i++) {
    int x, y, k;
    scanf("%d%d%d", &x, &y, &k);
    conn[x][y] = true;
    while (k--) {
      int p;
      scanf("%d", &p);
      E[x][y].push_back(p);
    }
  }
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++)
      if (conn[i][j]) {
        NEW.clear(), NEW.push_back(i), NEW.push_back(j);
        Expand(BEG, 0, 0);
        NEW.clear(), NEW.push_back(i), NEW.push_back(j);
        Expand(EXP, 1, 0);
        NEW.clear(), NEW.push_back(i), NEW.push_back(j);
        Expand(PRE, 0, 1);
      }
  for (set<deque<int> >::iterator i = BEG.begin(); i != BEG.end(); i++)
    f[i->size() - 1][i->front()][i->back()]++;
  for (int i = 0; i < 2 * N; i++)
    for (set<deque<int> >::iterator j = EXP.begin(); j != EXP.end(); j++)
      if (i + j->size() - 1 <= 2 * N)
        for (int p = 1; p <= N; p++)
          add(f[i + j->size() - 1][p][j->back()], f[i][p][j->front()]);
  for (int i = 0; i < 2 * N; i++)
    for (set<deque<int> >::iterator j = PRE.begin(); j != PRE.end(); j++)
      if (i + j->size() - 1 <= 2 * N)
        for (int p = 1; p <= N; p++)
          add(f[i + j->size() - 1][j->front()][p], f[i][j->back()][p]);
  for (int i = 1; i <= 2 * N; i++) {
    int sum(0);
    for (int j = 1; j <= N; j++)
      for (int k = 1; k <= N; k++) add(sum, f[i][j][k]);
    printf("%d\n", sum);
  }
  return 0;
}
