#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,op,ansa,ansb,maxn,maxi,maxiex,maxop;
inline int read()
{
int s=0,m=0;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')m=1;ch=getchar();}
while( isdigit(ch))s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
return m?-s:s;
}
struct QWQ{
int r1,r2,r3;
int id;
void rd()
{
int a,b,c;
a=read(),b=read(),c=read();
r1=min(min(a,b),c);
r2=min(max(a,b),c);
r3=max(max(a,b),c);
}
}a[500005];
bool cmp(QWQ a1,QWQ a2)
{
if(a1.r2!=a2.r2) return a1.r2<a2.r2;
if(a1.r3!=a2.r3) return a1.r3<a2.r3;
return a1.id<a2.id;
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
a[i].rd();
a[i].id=i;
if(a[i].r1*a[i].r1*a[i].r1/4>maxn)
{
maxop=0;
maxn=a[i].r1*a[i].r1*a[i].r1/4;
maxi=i;
}
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<n;i++)
{
if(a[i].r2!=a[i+1].r2||a[i].r3!=a[i+1].r3) continue;
int u=min(a[i].r1+a[i+1].r1,a[i].r2);
if(u*u*u/4>maxn)
{
maxop=1;
maxn=u*u*u/4;
maxi=a[i].id;
maxiex=a[i+1].id;
}
}
if(maxop) cout<<maxop<<endl<<maxi<<' '<<maxiex<<endl<<maxn;
else cout<<maxop<<endl<<maxi<<endl<<maxn;
return 0;
}
有点丑见谅
70分求调