#include <bits/stdc++.h>
using namespace std;
const int maxn = 50 + 5;
int n, m;
bool g1[maxn][maxn], g2[maxn][maxn];
vector<int> v1[maxn][maxn], v2[maxn][maxn];
bool go(int x, vector<int> &cur, bool g[maxn][maxn],
        vector<int> v[maxn][maxn]) {
  int pos = 0;
  while (pos < (int((cur).size())) && (int((cur).size())) < 2 * n) {
    int y = cur[pos++];
    if (!g[x][y]) return false;
    copy((v[x][y]).begin(), (v[x][y]).end(), back_inserter(cur));
    x = y;
  }
  return pos == (int((cur).size()));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 0, _n = (int)(m); i < _n; i++) {
    int x, y, k;
    cin >> x >> y >> k;
    x--, y--;
    g1[x][y] = g2[y][x] = true;
    while (k--)
      v1[x][y].push_back(0), cin >> v1[x][y].back(), v1[x][y].back()--;
    v2[y][x] = v1[x][y];
    reverse((v2[y][x]).begin(), (v2[y][x]).end());
  }
  for (int i = 0, _n = (int)(n); i < _n; i++)
    for (int j = 0, _n = (int)(n); j < _n; j++)
      if (g1[i][j]) {
        for (int k = 0, _n = (int)((int((v1[i][j]).size())) - 1); k < _n; k++)
          if (v1[i][j][k] == i && v1[i][j][k + 1] == j) {
            vector<int> prv, nxt;
            for (int p = (int)(k), _x = (int)(0); p-- > _x;)
              prv.push_back(v1[i][j][p]);
            for (int p = (int)(k + 2), _n = (int)((int((v1[i][j]).size())));
                 p < _n; p++)
              nxt.push_back(v1[i][j][p]);
            bool ok1 = go(j, nxt, g1, v1);
            bool ok2 = go(i, prv, g2, v2);
            if (!ok1 || !ok2 ||
                (int((prv).size())) + 2 + (int((nxt).size())) > 2 * n)
              continue;
            cout << (int((prv).size())) + 2 + (int((nxt).size())) << endl;
            for (int p = (int)((int((prv).size()))), _x = (int)(0); p-- > _x;)
              cout << 1 + prv[p] << ' ';
            cout << 1 + i << ' ' << 1 + j;
            for (int p = 0, _n = (int)((int((nxt).size()))); p < _n; p++)
              cout << ' ' << 1 + nxt[p];
            cout << endl;
            {
              int _;
              cin >> _;
              return 0;
            }
          }
      }
  cout << 0 << endl;
  {
    int _;
    cin >> _;
    return 0;
  }
}
