#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;
}