#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n;
  cin >> n;
  vector<pair<long long, pair<long long, long long> > > v;
  long long t = 2;
  long long last = 2 * n;
  while (t <= last) {
    for (long long j = 1; j < t; j++) {
      long long a;
      cin >> a;
      v.push_back(pair<long long, pair<long long, long long> >(
          a, pair<long long, long long>(t, j)));
    }
    t++;
  }
  sort(v.rbegin(), v.rend());
  set<long long> st, gt;
  vector<long long> z;
  long long arr[last + 5];
  for (long long i = 0; i < v.size(); i++) {
    long long f = 2, g = 2;
    long long p = st.size();
    st.insert(v[i].second.first);
    long long ppp = st.size();
    if (ppp > p) {
      f = 3;
    }
    st.insert(v[i].second.second);
    long long ddd = st.size();
    if (ddd > ppp) {
      g = 3;
    }
    long long pp = st.size();
    if (pp - p == 2) {
      p = pp;
      arr[v[i].second.first] = v[i].second.second;
      arr[v[i].second.second] = v[i].second.first;
    } else {
      if (g == 3) {
        st.erase(v[i].second.second);
      }
      if (f == 3) {
        st.erase(v[i].second.first);
      }
    }
  }
  for (long long j = 1; j <= last; j++) {
    cout << arr[j] << " ";
  }
  cout << endl;
  return 0;
}
