#include #include #define rep( i, n, m ) for(int i = ( n ); i < ( m ); i++) int main( void ){ int n; if (!scanf( "%d", &n )) return 0; int* * array_ptr = new int*[n]; int* counters = new int[n*2]; rep( i, 0, n ){ int num; if (!scanf( "%d", &num )) return 0; array_ptr[i] = new int[num]; rep(j,0,num){ if (!scanf( "%d", array_ptr[i]+j )) return 0; } counters[2*i] = 0; counters[2*i+1] = num; } bool is_finished = false; std::queue costomers; while(!is_finished){ is_finished = true; rep(i,0,n){ if (counters[2*i] != counters[2*i+1]){ is_finished = false; costomers.push(array_ptr[i][counters[2*i]]); counters[2*i]++; } } } while(!costomers.empty()){ printf("%d ", costomers.front()); costomers.pop(); } printf("\n"); return 0; }