//VTBABY - Vườn treo Babylon
//https://l...content-available-to-author-only...e.net/problem/vtbaby
#include <bits/stdc++.h>
#define ll long long
#define maxn 100006
using namespace std;
int n, F[maxn], before[maxn];
vector<int> X(3, 0), used(3, 0);
//0: cao; 1: dai; 2: rong
vector<vector<int>> CauHinh;
struct stone{
int d, r, c, id;
} A[maxn];
bool cmp(stone A, stone B){
return A.d*A.r*A.c>=B.d*B.r*B.c;
}
stone change(int x, int y, int z, int id, vector<int> V){
vector<int> v;
v.push_back(x);
v.push_back(y);
v.push_back(z);
sort(v.begin(), v.end(), greater<int>());
stone tmp;
for (int i=0; i<=2; i++){
if (V[i]==0) tmp.c=v[i];
else if (V[i]==1) tmp.d=v[i];
else if (V[i]==2) tmp.r=v[i];
}
tmp.id=id;
return tmp;
}
void Try(int i){
for (int j=0; j<=2; j++){
if (used[j]==1) continue;
X[i]=j;
used[j]=1;
if (i==2) CauHinh.push_back(X);
else Try(i+1);
used[j]=0;
}
}
int dp(int k){
cout<< k<< endl;
for (int i=1; i<=n; i++){
A[i]=change(A[i].d, A[i].r, A[i].c, A[i].id, CauHinh[k]);
cout<< i<< " "<< A[i].d<< " "<< A[i].r<< " "<< A[i].c<< endl;
}
int idmax=0;
memset(F, 0, sizeof F);
memset(before, 0, sizeof before);
for (int i=1; i<=n; i++){
F[i]=A[i].c;
for (int j=0; j<i; j++){
if (A[i].d<=A[j].d && A[i].r<=A[j].r && F[j]+A[i].c>F[i]){
F[i]=F[j]+A[i].c;
before[i]=j;
}
}
if (F[i]>F[idmax]) idmax=i;
}
int tmp=idmax;
cout<< F[idmax]<< endl;
stack<int> st;
while (tmp!=0){
st.push(tmp);
tmp=before[tmp];
}
while (!st.empty()){
cout<< st.top()<< " ";
st.pop();
}
cout<< endl;
return F[idmax];
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
cin>> n;
Try(0);
for (int i=1; i<=n; i++){
int x, y, z; cin>> x>> y>> z;
A[i]={x, y, z, i};
}
A[0]={0, 0, 0, 0};
sort(A+1, A+n+1, cmp);
int ma=0;
for (int i=0; i<6; i++) ma=max(ma, dp(i));
cout<< ma<< endl;
for (int i=0; i<6; i++){
for (int x:CauHinh[i]) cout<< x<< " ";
cout<< endl;
}
return 0;
}
Ly9WVEJBQlkgLSBWxrDhu51uIHRyZW8gQmFieWxvbgovL2h0dHBzOi8vbC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5uZXQvcHJvYmxlbS92dGJhYnkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbWF4biAxMDAwMDYKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuLCBGW21heG5dLCBiZWZvcmVbbWF4bl07CnZlY3RvcjxpbnQ+IFgoMywgMCksIHVzZWQoMywgMCk7Ci8vMDogY2FvOyAxOiBkYWk7IDI6IHJvbmcKdmVjdG9yPHZlY3RvcjxpbnQ+PiBDYXVIaW5oOwpzdHJ1Y3Qgc3RvbmV7CiAgICBpbnQgZCwgciwgYywgaWQ7Cn0gQVttYXhuXTsKCmJvb2wgY21wKHN0b25lIEEsIHN0b25lIEIpewogICAgcmV0dXJuIEEuZCpBLnIqQS5jPj1CLmQqQi5yKkIuYzsKfQoKc3RvbmUgY2hhbmdlKGludCB4LCBpbnQgeSwgaW50IHosIGludCBpZCwgdmVjdG9yPGludD4gVil7CiAgICB2ZWN0b3I8aW50PiB2OwogICAgdi5wdXNoX2JhY2soeCk7CiAgICB2LnB1c2hfYmFjayh5KTsKICAgIHYucHVzaF9iYWNrKHopOwogICAgc29ydCh2LmJlZ2luKCksIHYuZW5kKCksIGdyZWF0ZXI8aW50PigpKTsKICAgIHN0b25lIHRtcDsKICAgIGZvciAoaW50IGk9MDsgaTw9MjsgaSsrKXsKICAgICAgICBpZiAoVltpXT09MCkgdG1wLmM9dltpXTsKICAgICAgICBlbHNlIGlmIChWW2ldPT0xKSB0bXAuZD12W2ldOwogICAgICAgIGVsc2UgaWYgKFZbaV09PTIpIHRtcC5yPXZbaV07CiAgICB9CiAgICB0bXAuaWQ9aWQ7CiAgICByZXR1cm4gdG1wOwp9Cgp2b2lkIFRyeShpbnQgaSl7CiAgICBmb3IgKGludCBqPTA7IGo8PTI7IGorKyl7CiAgICAgICAgaWYgKHVzZWRbal09PTEpIGNvbnRpbnVlOwogICAgICAgIFhbaV09ajsKICAgICAgICB1c2VkW2pdPTE7CiAgICAgICAgaWYgKGk9PTIpIENhdUhpbmgucHVzaF9iYWNrKFgpOwogICAgICAgIGVsc2UgVHJ5KGkrMSk7CiAgICAgICAgdXNlZFtqXT0wOwogICAgfQp9CgppbnQgZHAoaW50IGspewogICAgY291dDw8IGs8PCBlbmRsOwogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspewogICAgICAgIEFbaV09Y2hhbmdlKEFbaV0uZCwgQVtpXS5yLCBBW2ldLmMsIEFbaV0uaWQsIENhdUhpbmhba10pOwogICAgICAgIGNvdXQ8PCBpPDwgIiAiPDwgQVtpXS5kPDwgIiAiPDwgQVtpXS5yPDwgIiAiPDwgQVtpXS5jPDwgZW5kbDsKICAgIH0KICAgIGludCBpZG1heD0wOwogICAgbWVtc2V0KEYsIDAsIHNpemVvZiBGKTsKICAgIG1lbXNldChiZWZvcmUsIDAsIHNpemVvZiBiZWZvcmUpOwogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspewogICAgICAgIEZbaV09QVtpXS5jOwogICAgICAgIGZvciAoaW50IGo9MDsgajxpOyBqKyspewogICAgICAgICAgICBpZiAoQVtpXS5kPD1BW2pdLmQgJiYgQVtpXS5yPD1BW2pdLnIgJiYgRltqXStBW2ldLmM+RltpXSl7CiAgICAgICAgICAgICAgICBGW2ldPUZbal0rQVtpXS5jOwogICAgICAgICAgICAgICAgYmVmb3JlW2ldPWo7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKEZbaV0+RltpZG1heF0pIGlkbWF4PWk7CiAgICB9CiAgICBpbnQgdG1wPWlkbWF4OwogICAgY291dDw8IEZbaWRtYXhdPDwgZW5kbDsKICAgIHN0YWNrPGludD4gc3Q7CiAgICB3aGlsZSAodG1wIT0wKXsKICAgICAgICBzdC5wdXNoKHRtcCk7CiAgICAgICAgdG1wPWJlZm9yZVt0bXBdOwogICAgfQogICAgd2hpbGUgKCFzdC5lbXB0eSgpKXsKICAgICAgICBjb3V0PDwgc3QudG9wKCk8PCAiICI7CiAgICAgICAgc3QucG9wKCk7CiAgICB9CiAgICBjb3V0PDwgZW5kbDsKICAgIHJldHVybiBGW2lkbWF4XTsKfQoKaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsgY291dC50aWUobnVsbHB0cik7CiAgICBjaW4+PiBuOwogICAgVHJ5KDApOwogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspewogICAgICAgIGludCB4LCB5LCB6OyBjaW4+PiB4Pj4geT4+IHo7CiAgICAgICAgQVtpXT17eCwgeSwgeiwgaX07CiAgICB9CiAgICBBWzBdPXswLCAwLCAwLCAwfTsKICAgIHNvcnQoQSsxLCBBK24rMSwgY21wKTsKICAgIGludCBtYT0wOwogICAgZm9yIChpbnQgaT0wOyBpPDY7IGkrKykgbWE9bWF4KG1hLCBkcChpKSk7CiAgICBjb3V0PDwgbWE8PCBlbmRsOwogICAgZm9yIChpbnQgaT0wOyBpPDY7IGkrKyl7CiAgICAgICAgZm9yIChpbnQgeDpDYXVIaW5oW2ldKSBjb3V0PDwgeDw8ICIgIjsKICAgICAgICBjb3V0PDwgZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==