#include<bits/stdc++.h> using namespace std; typedef long long ll; #define F first #define S second #define pii pair<int, int> #define eb emplace_back #define all(v) v.begin(), v.end() #define rep(i, n) for (int i = 0; i < (n); ++i) #define rep3(i, l, n) for (int i = l; i < (n); ++i) #define sz(v) (int)v.size() #define inf (int)(1e9+7) #define abs(x) (x >= 0 ? x : -(x)) #define ceil(a, b) a / b + !!(a % b) template<typename T1, typename T2> inline void chmin(T1 &a, T2 b) { if (a > b) a = b; } template<typename T1, typename T2> inline void chmax(T1 &a, T2 b) { if (a < b) a = b; } // template<typename T> T pow(T a, int b) { return b ? pow(a * a, b / 2) * (b % 2 ? a : 1) : 1; } template<typename T> T gcd(T a, T b) { if (b == 0) return a; return gcd(b, a % b); } int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; queue<int> a[n]; rep(i, n) { int k; cin >> k; rep(j, k) { int A; cin >> A; a[i].push(A); } } vector<int> ans; while (1) { int cnt = 0; rep(i, n) { if (sz(a[i]) == 0) { cnt++; continue; } ans.eb(a[i].front()); a[i].pop(); } if (cnt == n) break; } rep(i, sz(ans)) cout << ans[i] << " "; cout << endl; }