#include <bits/stdc++.h>
using namespace std;
vector<int> ans;
vector<int> a[40100];
int kol = 0;
void vv(int i) {
  int l = 0;
  int P = a[i].size();
  printf("%d ", P - kol);
  int r = 0;
  for (int r = 0; r < P; r++) {
    if (a[i][r] != ans[l])
      printf("%d ", a[i][r]);
    else
      l++;
  }
  printf("\n");
};
int main() {
  int n;
  scanf("%d", &n);
  int N = n * (n - 1) / 2;
  int j = 0;
  int X = 555;
  for (int i = 0; i < N; i++) {
    int x;
    scanf("%d", &x);
    for (int L = 0; L < x; L++) {
      int y;
      scanf("%d", &y);
      a[i].push_back(y);
    }
    sort(a[i].begin(), a[i].end());
    if (X > a[i][0]) {
      X = a[i][0];
      j = i;
    }
  }
  if (n == 2) {
    cout << 1 << " " << a[0][0] << endl;
    cout << a[0].size() - 1 << " ";
    for (int i = 1; i < a[0].size(); i++) cout << a[0][i] << " ";
    cout << endl;
    return 0;
  }
  int o = 0;
  for (int i = j + 1; i < N; i++) {
    if (a[i][0] == a[j][0]) {
      if (o == 0) {
        o = 1;
        int l = 0;
        int r = 0;
        while (l < a[j].size() && r < a[i].size()) {
          if (a[j][l] == a[i][r]) {
            ans.push_back(a[i][r]);
            l++;
            r++;
          }
          if (a[j][l] < a[i][r])
            l++;
          else if (a[j][l] > a[i][r])
            r++;
        }
        kol = ans.size();
        printf("%d ", kol);
        for (int L = 0; L < kol; L++) printf("%d ", ans[L]);
        printf("\n");
        ans.push_back(555);
        vv(i);
        vv(j);
      } else
        vv(i);
    }
  }
  return 0;
}
