#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
char s[205][205];
int l[205], shu[205], num[205], fnum[205];
vector<int> g[205];
int main() {
  int n;
  cin >> n;
  int m = n * (n - 1) / 2, x, y, nm = 1;
  if (n == 2) {
    scanf("%d", &x);
    for (int j = 0; j < x; j++) {
      scanf("%d", &y);
      if (j == 0) {
        printf("1 %d\n", y);
        continue;
      }
      if (j == 1) {
        printf("%d", x - 1);
      }
      printf(" %d", y);
    }
    printf("\n");
    return 0;
  }
  for (int i = 1; i <= 200; i++) g[i].clear(), num[i] = 0, l[i] = 0;
  for (int i = 0; i < m; i++) {
    scanf("%d", &x);
    for (int j = 0; j < x; j++) {
      scanf("%d", &y);
      if (num[y] == 0) num[y] = nm, fnum[nm] = y, nm++;
      s[num[y]][l[y]++] = i + 30;
    }
  }
  for (int i = 1; i <= nm; i++) s[i][n] = '\0';
  int top = 1;
  for (int i = 1; i <= nm; i++) {
    if (shu[i] != 0) continue;
    shu[i] = top++;
    g[shu[i]].push_back(i);
    for (int j = i + 1; j <= nm; j++) {
      if (strcmp(s[i], s[j]) == 0) {
        g[shu[i]].push_back(j);
        shu[j] = shu[i];
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    printf("%u", g[i].size());
    for (int j = 0; j < g[i].size(); j++) {
      printf(" %d", fnum[g[i][j]]);
    }
    printf("\n");
  }
  return 0;
}
