#include <bits/stdc++.h>
using namespace std;
signed main(){
int n; cin >> n;
vector<vector<int>> p(n);
vector<vector<int>> posi(n-1, vector<int>(n, -1));
for(int i=1; i<n; i++){
for(int j=0; j<i; j++){
int x; cin >> x;
p[i].push_back(x);
posi[x][i]= j;
}
}
vector<vector<int>> graph(n);
for(int i=0; i<n; i++){
for(int j=i+1; j<n; j++){
if(posi[i][j]<(j+1)/2){
graph[j].push_back(i);
graph[i].push_back(j);
}
}
}
vector<int> touse(n);
for(int i=0; i<n; i++)touse[i]= i;
sort(touse.begin(), touse.end(), [&](int a, int c){ return graph[a].size()<=graph[c].size();});
vector<int> perm;
perm.push_back(touse[0]);
vector<int>visited(n, 0);
visited[touse[0]]= 1;
for(int i=1; i<n; i++){
int x = perm[i-1];
int ma = touse[n-1];
for(int j=0; j<n; j++){
if(graph[ma].size()>=graph[j].size() && visited[j]==0){
if(j<x&& posi[j][x] < (x+1)/2)ma = j;
else if(j>x && posi[x][j]<(j+1)/2)ma = j;
}
}
visited[ma]= 1;
perm.push_back(ma);
}
for(auto it: perm)cout << it << " ";
}