#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e7+5;
const ll mod=1<<30;
int pow_bit[maxn],pow_num[maxn],f[maxn],f2[maxn],f3[maxn],prime[maxn],tot;
bool check[maxn];
void init()
{
f[1]=f2[1]=f3[1]=1;
for(int i=2;i<maxn;++i)
{
if(!check[i])
{
prime[tot++]=i;
f[i]=i-2;
f2[i]=f3[i]=i;
pow_num[i]=i;
pow_bit[i]=1;
}
for(int j=0;j<tot;++j)
{
if(i*prime[j]>=maxn)
break;
check[i*prime[j]]=1;
if(i%prime[j])
{
pow_num[i*prime[j]]=prime[j];
pow_bit[i*prime[j]]=1;
f[i*prime[j]]=f[i]*(prime[j]-2);
f2[i*prime[j]]=f2[i]*prime[j];
f3[i*prime[j]]=f3[i]*prime[j];
}
else
{
pow_num[i*prime[j]]=pow_num[i]*prime[j];
pow_bit[i*prime[j]]=pow_bit[i]+1;
if(pow_num[i]==i)
{
if(pow_bit[i]==1)
f[i*prime[j]]=(prime[j]-1)*(prime[j]-1);
else
f[i*prime[j]]=f[i]*prime[j];
f2[i*prime[j]]=f2[i];
f3[i*prime[j]]=f3[i];
if(pow_bit[i]%2==0)
f2[i*prime[j]]*=prime[j];
if(pow_bit[i]%3==0)
f3[i*prime[j]]*=prime[j];
}
else
{
f[i*prime[j]]=f[i/pow_num[i]]*f[pow_num[i]*prime[j]];
f2[i*prime[j]]=f2[i/pow_num[i]]*f2[pow_num[i]*prime[j]];
f3[i*prime[j]]=f3[i/pow_num[i]]*f3[pow_num[i]*prime[j]];
}
break;
}
}
}
}
int main()
{
init();
int t,ans,a,b,c;
scanf("%d",&t);
while(t--&&scanf("%d%d%d",&a,&b,&c)!=EOF)
{
ans=0;
for(int i=a;i;--i)
ans=(ans+(a/i)%mod*(b/f2[i])%mod*(c/f3[i])%mod*f[i]%mod)%mod;
printf("%lld\n",ans);
}
return 0;
}