#include<cstdio>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
inline int read()
{
int x=0,y=1;
char c=getchar();
while(c>'9'||c<'0')
{
if(c=='-')
y=-1;
c=getchar();
}
while(c<='9'&&c>='0')
{
x=x*10+c-'0';
c=getchar();
}
return x*y;
}
ll v,ansa,ansb,ans,ansc,Ma,aa,bb,cc,Mb;
ll pr[201],q[201],k;
void dfsb(ll prn,ll sum)
{
if(sum>Mb)
return;
if(prn>k)
{
bb=sum;
cc=v/bb/aa;
if(bb<aa||cc<bb) return;
if(2*(aa*bb+bb*cc+aa*cc)<ans)
{
ans=2*(aa*bb+bb*cc+aa*cc);
ansa=aa;
ansb=bb;
ansc=cc;
}
return;
}
if(q[prn])
{
q[prn]--;
dfsb(prn,sum*pr[prn]);
q[prn]++;
}
dfsb(prn+1,sum);
}
void dfs(ll prn,ll sum)
{
if(sum>Ma)
return;
if(prn>k)
{
ll a=sum;
if(ans<=(2*v/a+4*a*sqrt(v/a)))
return;
Mb=sqrt(v/a)+1;
aa=a;
dfsb(1,1);
return;
}
if(q[prn])
{
q[prn]--;
dfs(prn,sum*pr[prn]);
q[prn]++;
}
dfs(prn+1,sum);
}
int main()
{
int T=read();
while(T--)
{
k=read();
ans=1e16;
v=1;
for(int i=1;i<=k;i++)
{
pr[i]=read();
q[i]=read();
v*=pow(pr[i],q[i]);
}
Ma=pow(v,1.0/3)+1;
dfs(1,1);
printf("%lld %lld %lld %lld\n",ans,ansa,ansb,ansc);
}
}
我死了