/*
没必要 看的太小,比如分解质因数啥的,
质因数是细分,
不如粗略地分,
分解约数
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
void solve()
{
LL a,b,c,d;
cin>>a>>b>>c>>d;
/*
x*y=k*a*b
*/
//x:[a,c]
//y: [b,d]
vector<LL> re1,re2;
//存约数模板
for(int i=1;i*i<=a;i++)
{
if(a%i==0)
{
re1.push_back(i);
re1.push_back(a/i);
}
}
for(int i=1;i*i<=b;i++)
{
if(b%i==0)
{
re2.push_back(i);
re2.push_back(b/i);
}
}
/*
我们是想让 k*a*b==x*y
其实没必要用a,b直接求,
可以用a,b的约数,假设分别为m*n
k*m*n==x*y
*/
vector<LL> f;
for(auto m:re1)
{
for(auto n:re2)
{
f.push_back(m*n); //存a*b的半个约数,另外半个约数可以用a*b/这半个约数得到
}
}
sort(f.begin(),f.end());
f.erase(unique(f.begin(),f.end()),f.end());
LL resx=-1,resy=-1;
for(auto v:f)
{
LL ansx=c/v*v;
LL v2=a*b/v;
LL ansy=d/v2*v2;
if(ansx>a&&ansy>b)
{
resx=ansx;
resy=ansy;
break;
}
}
cout<<resx<<" "<<resy<<endl;
return;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin>>T;
while(T--)
{
solve();
}
return 0;
}