#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse4")
using namespace std;
inline long long in() {
  long long x;
  scanf("%lld", &x);
  return x;
}
const long long N = 1000;
long long partner[N];
int32_t main() {
  priority_queue<pair<long long, pair<long long, long long>>> q;
  long long n = in();
  for (long long i = 2; i <= 2 * n; i++) {
    for (long long j = 1; j < i; j++) {
      long long val = in();
      q.push({val, {i, j}});
    }
  }
  while (!q.empty()) {
    auto p = q.top();
    long long u = p.second.second, v = p.second.first;
    q.pop();
    if (partner[u] == 0 and partner[v] == 0) {
      partner[u] = v;
      partner[v] = u;
    }
  }
  for (long long i = 1; i <= 2 * n; i++) cout << partner[i] << " ";
}
