#include <bits/stdc++.h>
struct node {
  int score, I, mate;
} abc[400000];
bool cmp(node a, node b) { return a.score > b.score; }
int kk[1000];
int tt[1000];
using namespace std;
int main() {
  int n;
  while (~scanf("%d", &n)) {
    memset(kk, 0, sizeof(kk));
    memset(tt, 0, sizeof(tt));
    int t = 0;
    for (int i = 2; i <= 2 * n; i++) {
      for (int j = 1; j < i; j++) {
        scanf("%d", &abc[t].score);
        abc[t].I = j;
        abc[t].mate = i;
        t++;
      }
    }
    sort(abc, abc + n * (2 * n - 1), cmp);
    for (int i = 0; i < n * (2 * n - 1); i++) {
      if (kk[abc[i].I] == 0 && kk[abc[i].mate] == 0) {
        tt[abc[i].I] = abc[i].mate;
        tt[abc[i].mate] = abc[i].I;
        kk[abc[i].I]++;
        kk[abc[i].mate]++;
      }
    }
    for (int i = 1; i <= 2 * n; i++) printf("%d ", tt[i]);
    printf("\n");
  }
}
