#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
long long T;
long long k;
long long p[101],aa[101];
long long V=1;
long long amx;
long long ansa,ansb,ansc;
long long ans = 1145141919810;
long long a,b,c;
long long bmx;
void bfs(int dep,long long sum);
void dfs(int dep,long long sum);
int main()
{
scanf("%d",&T);
long long i,j;
while(T--)
{
ansa = 0;
ansb = 0;
ansc = 0;
ans = 9000000000000000000;
scanf("%lld",&k);
V=1;
for(i=1;i<=k;i++)
{
scanf("%lld%lld",&p[i],&aa[i]);
for(j=1;j<=aa[i];j++)
{
V*=p[i];
}
}
for(i=1;i<=V;i++)
{
if((i-1)*(i-1)*(i-1)<=V&&i*i*i>=V)
{
amx = i+1;
break;
}
}
dfs(1,1);
printf("%lld %lld %lld %lld\n",ans*2ll,ansa,ansb,ansc);
}
}
void bfs(int dep,long long sum)
{
if(sum>bmx)
{
return;
}
else if(dep>k)
{
if(sum<a)
{
return;
}
b = sum,c = V/a/b;
if(a*b+b*c+a*c<ans)
{
ans = a*b+b*c+a*c;
ansa = a;
ansb = b;
ansc = c;
}
return;
}
if(aa[dep]>=1)
{
aa[dep]-=1;
bfs(dep,sum*p[dep]);
aa[dep]+=1;
}
bfs(dep+1,sum);
}
void dfs(int dep,long long sum)
{
if(sum>amx)
{
return;
}
else if(dep>k)
{
a = sum;
if(V/a + 2*a*sqrt(V/a) < ans)
{
bmx = (long long)(sqrt(V/a))+1ll;
bfs(1,1);
}
return;
}
if(aa[dep]>=1)
{
aa[dep]-=1;
dfs(dep,sum*p[dep]);
aa[dep]+=1;
}
dfs(dep+1,sum);
}
不知道为啥错了,求大佬帮忙