#include <bits/stdc++.h>
using namespace std;
struct data {
  int a, b, u;
  data(int x, int y, int z) : a(x), b(y), u(z) {}
  friend bool operator<(data a, data b) { return a.u < b.u; }
};
priority_queue<data> p;
int vis[1007];
int n;
int main() {
  scanf("%d", &n);
  for (int i = 2; i <= n * 2; i++) {
    for (int j = 1; j < i; j++) {
      int x;
      scanf("%d", &x);
      p.push(data(i, j, x));
    }
  }
  while (!p.empty()) {
    data tmp = p.top();
    p.pop();
    if (vis[tmp.a] == 0 && vis[tmp.b] == 0) {
      vis[tmp.a] = tmp.b;
      vis[tmp.b] = tmp.a;
    }
  }
  for (int i = 1; i < 2 * n; i++) {
    printf("%d ", vis[i]);
  }
  printf("%d\n", vis[2 * n]);
}
