rt,全部RE,痛失AK
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct elf{
int val,id;
};
int n,mxv,mxid,mxhv,mxhidx,mxhidy;
elf rec[3010][3010];
int min(int a,int b,int c){
return min(a,min(b,c));
}
ll ret(int ans){
return (1ll*ans*ans*ans/4);
}
int solve(int x_,int y_,int z_,int id){
if(min(x_,y_,z_)>mxv){
mxv=min(x_,y_,z_);
mxid=id;
}
if(min(x_,y_,rec[x_][y_].val+z_)>mxhv&&rec[x_][y_].val){
mxhv=min(x_,y_,rec[x_][y_].val+z_);
mxhidx=rec[x_][y_].id;
mxhidy=id;
}
if(min(y_,x_,rec[y_][x_].val+z_)>mxhv&&rec[y_][x_].val){
mxhv=min(y_,x_,rec[y_][x_].val+z_);
mxhidx=rec[y_][x_].id;
mxhidy=id;
}
if(min(z_,y_,rec[z_][y_].val+x_)>mxhv&&rec[z_][y_].val){
mxhv=min(z_,y_,rec[z_][y_].val+x_);
mxhidx=rec[z_][y_].id;
mxhidy=id;
}
if(min(z_,y_,rec[y_][z_].val+x_)>mxhv&&rec[y_][z_].val){
mxhv=min(z_,y_,rec[y_][z_].val+x_);
mxhidx=rec[y_][z_].id;
mxhidy=id;
}
if(min(x_,z_,rec[x_][z_].val+y_)>mxhv&&rec[x_][z_].val){
mxhv=min(x_,z_,rec[x_][z_].val+y_);
mxhidx=rec[x_][z_].id;
mxhidy=id;
}
if(min(x_,z_,rec[z_][x_].val+y_)>mxhv&&rec[z_][x_].val){
mxhv=min(x_,z_,rec[z_][x_].val+y_);
mxhidx=rec[z_][x_].id;
mxhidy=id;
}
if(rec[x_][y_].val<z_){
rec[x_][y_].val=z_;
rec[x_][y_].id=id;
}
if(rec[y_][x_].val<z_){
rec[y_][x_].val=z_;
rec[y_][x_].id=id;
}
if(rec[z_][y_].val<x_){
rec[z_][y_].val=x_;
rec[z_][y_].id=id;
}
if(rec[y_][z_].val<x_){
rec[y_][z_].val=x_;
rec[y_][z_].id=id;
}
if(rec[x_][z_].val<y_){
rec[x_][z_].val=y_;
rec[x_][z_].id=id;
}
if(rec[z_][x_].val<y_){
rec[z_][x_].val=y_;
rec[z_][x_].id=id;
}
}
int main(){
cin>>n;
for(int i=1,u,v,w;i<=n;i++){
cin>>u>>v>>w;
solve(u,v,w,i);
}
if(mxv>mxhv){
cout<<0<<endl<<mxid<<endl<<ret(mxv);
//printf("0\n%d\n%lld",mxid,ret(mxv));
}else{
cout<<1<<endl<<mxhidx<<' '<<mxhidy<<endl<<ret(mxhv);
//printf("1\n%d %d\n%lld",mxhidx,mxhidy,ret(mxhv));
}
}