#include <bits/stdc++.h>
using namespace std;
int n;
bool q[220], w[220];
vector<int> a[220 * 220];
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n * (n - 1) / 2; i++) {
    int k;
    scanf("%d", &k);
    a[i].resize(k);
    for (int j = 0; j < k; j++) scanf("%d", &a[i][j]);
  }
  if (n == 2) {
    printf("%d %d\n", 1, a[0][0]);
    printf("%d ", a[0].size() - 1);
    for (int j = 1; j < a[0].size(); j++) printf("%d ", a[0][j]);
    return 0;
  }
  memset(q, false, sizeof(q));
  for (int j = 0; j < a[0].size(); j++) q[a[0][j]] = true;
  memset(w, false, sizeof(w));
  for (int i = 1; i < n * (n - 1) / 2; i++) {
    bool ok = false;
    for (int j = 0; j < a[i].size(); j++)
      if (q[a[i][j]]) {
        ok = true;
        break;
      }
    if (ok) {
      for (int j = 0; j < a[i].size(); j++) w[a[i][j]] = true;
      break;
    }
  }
  int k = 0;
  for (int i = 0; i < 201; i++)
    if (q[i]) {
      if (!w[i])
        q[i] = false;
      else
        k++;
    }
  printf("%d ", k);
  for (int i = 0; i < 201; i++)
    if (q[i]) printf("%d ", i);
  puts("");
  for (int i = 0; i < n * (n - 1) / 2; i++) {
    bool ok = false;
    for (int j = 0; j < a[i].size(); j++)
      if (q[a[i][j]]) {
        ok = true;
        break;
      }
    if (ok) {
      k = 0;
      for (int j = 0; j < a[i].size(); j++)
        if (!q[a[i][j]]) k++;
      printf("%d ", k);
      for (int j = 0; j < a[i].size(); j++)
        if (!q[a[i][j]]) {
          printf("%d ", a[i][j]);
        }
      puts("");
    }
  }
}
