#include<iostream>
using namespace std;
int a,b,c,d,T,prime[50005],cnt_prime,ma,mb,mc,md,cntx;
long long ans=1;
bool is_prime(int n)
{
if(n<2)
{
return false;
}
if(n==2)
{
return true;
}
for(long long i=2;i*i<=n;i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
int count(int n,int p,int zhanwei1,int zhanwei2)
{
int m=0;
while(n%p==0)
{
n/=p;
m++;
}
return m;
}
int main()
{
scanf("%d",&T);
for(int i=2;i*i<=2e9;i++)
{
if(is_prime(i))
{
prime[++cnt_prime]=i;
}
}
while(T--)
{
ans=1;
scanf("%d%d%d%d",&a,&c,&b,&d);
for(int i=1;i<=cnt_prime;i++)
{
if(prime[i]>d)break;
if(d%prime[i]!=0)continue;
ma=count(a,prime[i],0,0);
mb=count(b,prime[i],0,0);
mc=count(c,prime[i],0,0);
md=count(d,prime[i],0,0);
if(ma>mc&&mb<md&&mc==md)cntx=1;
else if(ma>mc&&mb==md&&mc<=md)cntx=1;
else if(ma==mc&&mb<md&&mc<=md)cntx=1;
else if(ma==mc&&mb==md&&mc<=md)cntx=md-mc+1;
else cntx=0;
ans*=cntx;
}
printf("%lld\n",ans);
}
return 0;
}