#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int N,L,B,X,Y,K,minimum=100000000,mini;
vector <int> V[1000];

int main(void){
    scanf("%d",&N);
    for(int i=0; i<N; i++){
       scanf("%d",&L);
       for(int j=0; j<L; j++){
          scanf("%d",&B);
          V[i].push_back(B); 
          ++K;   
       }      
    }

    for(int i=0; i<K; i++){
      for(int j=0; j<N; j++)
         if(V[j].size()>0 && V[j][0]<minimum){
             minimum=V[j][0];
             X=j;                
         }
      for(int j=0; j<N; j++)   
         if(minimum==V[j][0] && j!=X){ 
           Y=j;
           mini=min(V[X].size(),V[Y].size());
           for(int k1=0; k1<mini; k1++)
              if (V[X][k1]>V[Y][k1]){
                 X=Y;
                 break;                    
              }
      }   
         printf("%d ",V[X][0]);
         V[X].erase(V[X].begin());
         minimum=100000000;        
    }
    
    printf("\n");
    return 0;
}
