#include <bits/stdc++.h>
using namespace std;
struct node {
  int p, q, val;
} a[1000050];
bool cmp(node a, node b) { return a.val > b.val; }
int vis[1050], b[1050];
int main() {
  int n;
  scanf("%d", &n);
  int tot = 0;
  for (int i = 2; i <= 2 * n; i++)
    for (int j = 1; j < i; j++) {
      scanf("%d", &a[tot].val);
      a[tot].p = i;
      a[tot].q = j;
      tot++;
    }
  sort(a, a + tot, cmp);
  for (int i = 0; i < tot; i++) {
    if (!vis[a[i].p] && !vis[a[i].q]) {
      b[a[i].p] = a[i].q;
      b[a[i].q] = a[i].p;
      vis[a[i].p] = 1;
      vis[a[i].q] = 1;
    }
  }
  for (int i = 1; i <= 2 * n; i++) {
    printf("%d ", b[i]);
  }
  return 0;
}
