#include <bits/stdc++.h>
using namespace std;
const int N = 55;
struct _two {
  int a, b;
} edge[N * N], aedge[N * N];
int vis[N * N][N];
int n, m;
int st[N], ast[N], qu[N + N + N], aqu[N + N + N];
void Init() {
  scanf("%d%d", &n, &m);
  int x, y, tot = 0;
  memset(st, 0, sizeof(st));
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &x, &y);
    ++tot;
    edge[tot] = (_two){y, st[x]};
    st[x] = tot;
    aedge[tot] = (_two){x, ast[y]};
    ast[y] = tot;
    scanf("%d", &vis[tot][0]);
    for (int j = 1; j <= vis[tot][0]; j++) scanf("%d", &vis[tot][j]);
  }
}
int dfs(int x) {
  int num = 0;
  while (num < qu[0] && qu[0] <= n + n) {
    ++num;
    bool flag = 0;
    for (int i = st[x]; i; i = edge[i].b)
      if (edge[i].a == qu[num]) {
        flag = 1;
        for (int j = 1; j <= vis[i][0]; j++) qu[++qu[0]] = vis[i][j];
        break;
      }
    if (!flag) return -1;
    x = qu[num];
  }
  if (qu[0] > n + n)
    return -1;
  else
    return qu[0];
}
int adfs(int x) {
  int num = 0;
  while (num < aqu[0] && aqu[0] <= n + n) {
    ++num;
    bool flag = 0;
    for (int i = ast[x]; i; i = aedge[i].b)
      if (aedge[i].a == aqu[num]) {
        flag = 1;
        for (int j = vis[i][0]; j >= 1; j--) aqu[++aqu[0]] = vis[i][j];
        break;
      }
    if (!flag) return -1;
    x = aqu[num];
  }
  if (aqu[0] > n + n)
    return -1;
  else
    return aqu[0];
}
void Work() {
  for (int i = 1; i <= n; i++)
    for (int j = st[i]; j; j = edge[j].b)
      for (int k = 2; k <= vis[j][0]; k++)
        if (vis[j][k] == edge[j].a && vis[j][k - 1] == i) {
          aqu[0] = k - 2;
          for (int l = k - 2; l >= 1; l--) aqu[k - 1 - l] = vis[j][l];
          int num1 = adfs(i);
          qu[0] = vis[j][0] - k;
          for (int l = k + 1; l <= vis[j][0]; l++) qu[l - k] = vis[j][l];
          int num2 = dfs(edge[j].a);
          if (num1 == -1 || num2 == -1) break;
          printf("%d\n", num1 + num2 + 2);
          for (int l = aqu[0]; l >= 1; l--) printf("%d ", aqu[l]);
          printf("%d %d", i, edge[j].a);
          for (int l = 1; l <= qu[0]; l++) printf(" %d", qu[l]);
          puts("");
          return;
        }
  puts("0");
}
int main() {
  Init();
  Work();
  return 0;
}
