#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;
typedef long long LL;
typedef double ld;
const int MAX=1000+10;
int ord[MAX];
int x,y,z;
int ax,ay,az;
int end;
int ansx,ansy,ansz;
LL ans,up;
int is(int a,int b,int c,int d)
{
return a && b && ord[c]-ord[a]==ord[d]-ord[b];
}
int gcd(int a,int b)
{
for(;b;)
{
int t=a;
a=b;
b=t%a;
}
return a;
}
int LCM(int a,int b)
{
return a/gcd(a,b)*b;
}
LL check()
{
if(is(ax,ay,x,y))
return 0;
if(is(ax,az,x,z))
return 0;
if(is(ay,az,y,z))
return 0;
int ta=2*x/gcd(2*x,ax);
int tb=2*y/gcd(2*y,ay);
int tc=2*z/gcd(2*z,az);
int T=LCM( LCM(ta,tb) , tc );
if(T>=up)
end=1;
return (LL)T*(ax+ay+az);
}
void Main()
{
scanf("%d%d%d",&x,&y,&z);
int sum=x+y+z;
end=0;
ans=0;
up=2* LCM ( LCM(x,y) , z );
for(sum--;sum;sum--)
for(ax=min(sum,x);ax>=x-47;--ax)
for(ay=min(sum-ax,y);ay>=y-47;--ay)
{
az=sum-ax-ay;
if(az<0 || az>z)
continue;
if(gcd( gcd(ax,ay) , az ) != 1)
continue;
LL tmp=check();
if(tmp>ans)
{
ans=tmp;
ansx=ax;
ansy=ay;
ansz=az;
}
if(end)
return;
}
return;
}
int main()
{
// freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
int i;
REP2(i,1,MAX)
{
int u=i;
for(;u%2==0;u/=2)
ord[i]++;
}
int T;
scanf("%d",&T);
while(T--)
{
Main();
printf("%d %d %d\n",ansx,ansy,ansz);
}
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksbCxyKSBmb3IoKGkpPShsKTsoaSk8PShyKTsrKyhpKSkKI2RlZmluZSBSRVAyKGksbCxyKSBmb3IoKGkpPShsKTsoaSkhPShyKTsrKyhpKSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExMOwp0eXBlZGVmIGRvdWJsZSBsZDsKCmNvbnN0IGludCBNQVg9MTAwMCsxMDsKCmludCBvcmRbTUFYXTsKaW50IHgseSx6OwppbnQgYXgsYXksYXo7CmludCBlbmQ7CgppbnQgYW5zeCxhbnN5LGFuc3o7CkxMIGFucyx1cDsKCmludCBpcyhpbnQgYSxpbnQgYixpbnQgYyxpbnQgZCkKewoJcmV0dXJuIGEgJiYgYiAmJiBvcmRbY10tb3JkW2FdPT1vcmRbZF0tb3JkW2JdOwp9CgppbnQgZ2NkKGludCBhLGludCBiKQp7Cglmb3IoO2I7KQoJewoJCWludCB0PWE7CgkJYT1iOwoJCWI9dCVhOwoJfQoJcmV0dXJuIGE7Cn0KCmludCBMQ00oaW50IGEsaW50IGIpCnsKCXJldHVybiBhL2djZChhLGIpKmI7Cn0KCkxMIGNoZWNrKCkKewoJaWYoaXMoYXgsYXkseCx5KSkKCQlyZXR1cm4gMDsKCWlmKGlzKGF4LGF6LHgseikpCgkJcmV0dXJuIDA7CglpZihpcyhheSxheix5LHopKQoJCXJldHVybiAwOwoJaW50IHRhPTIqeC9nY2QoMip4LGF4KTsKCWludCB0Yj0yKnkvZ2NkKDIqeSxheSk7CglpbnQgdGM9Mip6L2djZCgyKnosYXopOwoJaW50IFQ9TENNKCBMQ00odGEsdGIpICwgdGMgKTsKCWlmKFQ+PXVwKQoJCWVuZD0xOwoJcmV0dXJuIChMTClUKihheCtheStheik7Cn0KCnZvaWQgTWFpbigpCnsKCXNjYW5mKCIlZCVkJWQiLCZ4LCZ5LCZ6KTsKCWludCBzdW09eCt5K3o7CgllbmQ9MDsKCWFucz0wOwoJdXA9MiogTENNICggTENNKHgseSkgLCB6ICk7Cglmb3Ioc3VtLS07c3VtO3N1bS0tKQoJCWZvcihheD1taW4oc3VtLHgpO2F4Pj14LTQ3Oy0tYXgpCgkJCWZvcihheT1taW4oc3VtLWF4LHkpO2F5Pj15LTQ3Oy0tYXkpCgkJCXsKCQkJCWF6PXN1bS1heC1heTsKCQkJCWlmKGF6PDAgfHwgYXo+eikKCQkJCQljb250aW51ZTsKCQkJCWlmKGdjZCggZ2NkKGF4LGF5KSAsIGF6ICkgIT0gMSkKCQkJCQljb250aW51ZTsKCQkJCUxMIHRtcD1jaGVjaygpOwoJCQkJaWYodG1wPmFucykKCQkJCXsKCQkJCQlhbnM9dG1wOwoJCQkJCWFuc3g9YXg7CgkJCQkJYW5zeT1heTsKCQkJCQlhbnN6PWF6OwoJCQkJfQoJCQkJaWYoZW5kKQoJCQkJCXJldHVybjsKCQkJfQoJcmV0dXJuOwp9CgppbnQgbWFpbigpCnsKLy8JZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pO2ZyZW9wZW4oIm91dHB1dC50eHQiLCJ3IixzdGRvdXQpOwoJaW50IGk7CglSRVAyKGksMSxNQVgpCgl7CgkJaW50IHU9aTsKCQlmb3IoO3UlMj09MDt1Lz0yKQoJCQlvcmRbaV0rKzsKCX0KCWludCBUOwoJc2NhbmYoIiVkIiwmVCk7Cgl3aGlsZShULS0pCgl7CgkJTWFpbigpOwoJCXByaW50ZigiJWQgJWQgJWRcbiIsYW5zeCxhbnN5LGFuc3opOwoJfQoJcmV0dXJuIDA7Cn0=