#include <bits/stdc++.h>
#include "swaps.h"
using namespace std;
// mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int MAXN = 510;
bool cmp[MAXN][MAXN];
/*
vector<int> p;
vector<pair<int, int>> ask;
void schedule(int a, int b){
ask.push_back({a, b});
}
vector<int> visit(){
vector<int> ret;
for(auto [a, b] : ask) ret.push_back((p[a - 1] > p[b - 1]));
ask.clear();
return ret;
}
void answer(vector<int> &ans){
cout << "Your solution: ";
for(auto i : ans) cout << p[i - 1] << " ";
cout << "\n";
}
*/
int take_max(vector<int> &cur){
if((int) cur.size() == 1) return cur[0];
vector<int> cand;
for(int i=1; i<cur.size(); i+=2) schedule(cur[i], cur[i - 1]);
vector<int> ret = visit();
for(int k=0; k<ret.size(); k++){
if(ret[k]){
cand.push_back(cur[2 * k + 1]);
} else cand.push_back(cur[2 * k]);
}
if((int) cur.size() % 2) cand.push_back(cur.back());
return take_max(cand);
}
void solve(int n, int v){
// for(int i=1; i<=n; i++) p.push_back(i);
// shuffle(p.begin(), p.end(), rng);
vector<int> cur, vtx;
for(int i=1; i<=n; i++) cur.push_back(i);
for(int i=0; i<n; i++){
int k = take_max(cur);
for(int j=0; j<cur.size(); j++){
if(cur[j] == k){
swap(cur[j], cur.back());
}
}
vtx.push_back(cur.back());
cur.pop_back();
}
answer(vtx);
}
/*
int main(){
int n, v; cin >> n >> v;
solve(n, v);
}
*/