#include<bits/stdc++.h>#define N 100010usingnamespace std;template<typename T>voidchkmax(T &x, T y){x = x > y ? x : y;}template<typename T>voidchkmin(T &x, T y){x = x > y ? y : x;}template<typename T>voidread(T &x){
x =0;int f =1;char c =getchar();while(!isdigit(c)){if(c =='-') f =-1; c =getchar();}while(isdigit(c)) x = x *10+ c -'0', c =getchar(); x *= f;}struct Node {int x, id;booloperator<(const Node &a)const{return x < a.x;}} a[N];struct Que {int n, m, s, id;booloperator<(const Que &b)const{if(s != b.s)return s < b.s;return n < b.n;}} b[N];struct BIT {int f[N];intlowbit(int x){return x &-x;}voidmodify(int x,int v){for(; x <=1e5; x +=lowbit(x)) f[x]+= v;}intquery(int x){int ret =0;for(; x; x -=lowbit(x)) ret += f[x];return ret;}} T;bool f[N];int p[N], s[N], mu[N], ans[N];voidsieve(int n){
mu[1]=1;int len =0;memset(f,true,sizeof(f));for(int i =1; i <= n; i++)for(int j = i; j <= n; j += i)
s[j]+= i;for(int i =2; i <= n; i++){if(f[i]) p[++len]= i, mu[i]=-1;for(int j =1; j <= len && i * p[j]<= n; j++){int k = i * p[j]; f[k]=false;if(i % p[j]==0){mu[k]=0;break;}
mu[k]=-mu[i];}}for(int i =1; i <= n; i++) a[i]=(Node){s[i], i};sort(a +1, a + n +1);}intsolve(int n,int m){int ret =0, x =0;for(int i =1; i <= n; i = x +1){
x =min(n /(n / i), m /(m / i));
ret +=(T.query(x)- T.query(i -1))*(n / i)*(m / i);}return ret;}intmain(){sieve(1e5);int q;read(q);for(int i =1; i <= q; i++){int n, m, s;read(n),read(m),read(s);if(n > m)swap(n, m);
b[i]=(Que){n, m, s, i};}sort(b +1, b + q +1);int sum =0, l =1;for(int i =1; i <= q; i++){while(l <=1e5&& a[l].x <= b[i].s){int x = a[l++].id;for(int j = x; j <=1e5; j += x)
T.modify(j, s[x]* mu[j / x]);}
ans[b[i].id]=solve(b[i].n, b[i].m);if(ans[b[i].id]<0) ans[b[i].id]+=1ll<<31;}for(int i =1; i <= q; i++) cout << ans[i]<<"\n";return0;}