#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
#define bit(n, i) ((n >> i) & 1)
#define all(a) a.begin(), a.end()
#define rep(i, x, n) for (int i = x; i <= n; ++i)
#define red(i, x, n) for (int i = x; i >= n; --i)
#define inp(a) if (fopen(a".inp", "r")) freopen(a".inp", "r", stdin), freopen(a".out", "w", stdout)
template<class A, class B> inline bool maxi(A &x, B y) {return (x < y ? x = y, 1 : 0);};
template<class A, class B> inline bool mini(A &x, B y) {return (x > y ? x = y, 1 : 0);};
const int N = 30 + 5;
const ll MOD = 1e9 + 7;
const ll INF = LLONG_MAX;
// main program
const int MAX = (4 * N) * (4 * N);
int n;
int sum = 0;
bool dp[N][MAX];
vector<int> s[N];
int trace[N][MAX], takeID[N][MAX];
vector<pair<int, int>> a[N], id[N];
void init(){
rep(c, 1, n) rep(i, 0, 3) rep(j, i + 1, 3){
s[c].push_back(a[c][i].first + a[c][j].first);
id[c].push_back({a[c][i].second, a[c][j].second});
}
}
signed main(){
cin.tie(0) -> sync_with_stdio(0);
cin >>n;
rep(i, 1, 4 * n){
int x, c; cin >>x >>c;
a[c].push_back({x, i}); sum += x;
}
init(); dp[0][0] = 1;
rep(i, 1, n) rep(k, 0, sum){
rep(t, 0, 5){
int w = s[i][t];
if (k >= w && dp[i - 1][k - w]){
dp[i][k] = 1;
trace[i][k] = k - w;
takeID[i][k] = t;
}
}
}
int last = 0;
int mi = INT_MAX;
rep(k, 0, sum) if (dp[n][k]){
int dif = abs(sum - 2 * k);
if (mi > dif){
last = k;
mi = dif;
}
}
vector<int> ans;
red(i, n, 1){
int t = takeID[i][last];
ans.push_back(id[i][t].first);
ans.push_back(id[i][t].second);
last = trace[i][last];
}
sort(all(ans));
for (int i: ans) cout <<i <<' ';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGJpdChuLCBpKSAoKG4gPj4gaSkgJiAxKQojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksIGEuZW5kKCkKI2RlZmluZSByZXAoaSwgeCwgbikgZm9yIChpbnQgaSA9IHg7IGkgPD0gbjsgKytpKQojZGVmaW5lIHJlZChpLCB4LCBuKSBmb3IgKGludCBpID0geDsgaSA+PSBuOyAtLWkpCiNkZWZpbmUgaW5wKGEpIGlmIChmb3BlbihhIi5pbnAiLCAiciIpKSBmcmVvcGVuKGEiLmlucCIsICJyIiwgc3RkaW4pLCBmcmVvcGVuKGEiLm91dCIsICJ3Iiwgc3Rkb3V0KQoKdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gaW5saW5lIGJvb2wgbWF4aShBICZ4LCBCIHkpIHtyZXR1cm4gKHggPCB5ID8geCA9IHksIDEgOiAwKTt9Owp0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiBpbmxpbmUgYm9vbCBtaW5pKEEgJngsIEIgeSkge3JldHVybiAoeCA+IHkgPyB4ID0geSwgMSA6IDApO307Cgpjb25zdCBpbnQgTiA9IDMwICsgNTsKY29uc3QgbGwgTU9EID0gMWU5ICsgNzsKY29uc3QgbGwgSU5GID0gTExPTkdfTUFYOwoKLy8gbWFpbiBwcm9ncmFtCgpjb25zdCBpbnQgTUFYID0gKDQgKiBOKSAqICg0ICogTik7CgppbnQgbjsKaW50IHN1bSA9IDA7CmJvb2wgZHBbTl1bTUFYXTsKdmVjdG9yPGludD4gc1tOXTsKaW50IHRyYWNlW05dW01BWF0sIHRha2VJRFtOXVtNQVhdOwp2ZWN0b3I8cGFpcjxpbnQsIGludD4+IGFbTl0sIGlkW05dOwoKdm9pZCBpbml0KCl7CiAgICByZXAoYywgMSwgbikgcmVwKGksIDAsIDMpIHJlcChqLCBpICsgMSwgMyl7CiAgICAgICAgc1tjXS5wdXNoX2JhY2soYVtjXVtpXS5maXJzdCArIGFbY11bal0uZmlyc3QpOwogICAgICAgIGlkW2NdLnB1c2hfYmFjayh7YVtjXVtpXS5zZWNvbmQsIGFbY11bal0uc2Vjb25kfSk7CiAgICB9Cn0Kc2lnbmVkIG1haW4oKXsKICAgIGNpbi50aWUoMCkgLT4gc3luY193aXRoX3N0ZGlvKDApOwoKICAgIGNpbiA+Pm47CgogICAgcmVwKGksIDEsIDQgKiBuKXsKICAgICAgICBpbnQgeCwgYzsgY2luID4+eCA+PmM7CgogICAgICAgIGFbY10ucHVzaF9iYWNrKHt4LCBpfSk7IHN1bSArPSB4OwogICAgfQoKICAgIGluaXQoKTsgZHBbMF1bMF0gPSAxOwoKICAgIHJlcChpLCAxLCBuKSByZXAoaywgMCwgc3VtKXsKICAgICAgICByZXAodCwgMCwgNSl7CiAgICAgICAgICAgIGludCB3ID0gc1tpXVt0XTsKCiAgICAgICAgICAgIGlmIChrID49IHcgJiYgZHBbaSAtIDFdW2sgLSB3XSl7CiAgICAgICAgICAgICAgICBkcFtpXVtrXSA9IDE7CiAgICAgICAgICAgICAgICB0cmFjZVtpXVtrXSA9IGsgLSB3OwogICAgICAgICAgICAgICAgdGFrZUlEW2ldW2tdID0gdDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpbnQgbGFzdCA9IDA7CiAgICBpbnQgbWkgPSBJTlRfTUFYOwoKICAgIHJlcChrLCAwLCBzdW0pIGlmIChkcFtuXVtrXSl7CiAgICAgICAgaW50IGRpZiA9IGFicyhzdW0gLSAyICogayk7CgogICAgICAgIGlmIChtaSA+IGRpZil7CiAgICAgICAgICAgIGxhc3QgPSBrOwogICAgICAgICAgICBtaSA9IGRpZjsKICAgICAgICB9CiAgICB9CgogICAgdmVjdG9yPGludD4gYW5zOwoKICAgIHJlZChpLCBuLCAxKXsKICAgICAgICBpbnQgdCA9IHRha2VJRFtpXVtsYXN0XTsKICAgICAgICBhbnMucHVzaF9iYWNrKGlkW2ldW3RdLmZpcnN0KTsKICAgICAgICBhbnMucHVzaF9iYWNrKGlkW2ldW3RdLnNlY29uZCk7CgogICAgICAgIGxhc3QgPSB0cmFjZVtpXVtsYXN0XTsKICAgIH0KCiAgICBzb3J0KGFsbChhbnMpKTsKICAgIGZvciAoaW50IGk6IGFucykgY291dCA8PGkgPDwnICc7CgogICAgcmV0dXJuIDA7Cn0=