#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, pos1, pos2;
} t;
vector<node> v;
vector<pair<int, int>> vp;
bool cmp(node a, node b) { return a.x > b.x; }
int main() {
  int n, a, i, j;
  cin >> n;
  int cnt = 0;
  for (i = 1; i <= 2 * n - 1; ++i) {
    for (j = 1; j <= i; ++j) {
      cin >> a;
      t.x = a;
      t.pos1 = i + 1;
      t.pos2 = j;
      v.push_back(t);
      cnt++;
    }
  }
  sort(v.begin(), v.end(), cmp);
  for (i = 0; i < cnt; ++i) vp.push_back(make_pair(v[i].pos1, v[i].pos2));
  int ans[810];
  bool flag[810];
  memset(ans, 0, sizeof ans);
  memset(flag, 0, sizeof flag);
  for (i = 0; i < cnt; ++i) {
    if (flag[vp[i].first] == 0 && flag[vp[i].second] == 0) {
      ans[vp[i].first] = vp[i].second;
      ans[vp[i].second] = vp[i].first;
      flag[vp[i].first] = 1;
      flag[vp[i].second] = 1;
    }
  }
  for (i = 1; i <= 2 * n; ++i) cout << ans[i] << " ";
  cout << endl;
  return 0;
}
