#include<bits/stdc++.h>
using namespace std;
#define ll __int128
int t;
long long A,B,C;
long long ans=0;
__int128 fpow(__int128 a,ll b){
__int128 ans=1;
while(b){
if(b&1){
if(ans>1e18/a)return (ll)2e18;
ans*=a;
}
a=a*a;
b>>=1;
}
return ans;
}
vector<long long >vec[70],vec2[70];
ll gcd(ll x,ll y){
return y? gcd(x,x%y):x;
}
__int128 res[70][1000005];
void work(){
cin>>A>>B>>C;
ans=C;
for(int i=1;i<=64;i++){
ll l=1,r=1e18;
while(l<r){
ll mid=(l+r+1)>>1;
if(mid<=min(A,C/i)&&fpow(mid,i)<=B)l=mid;
else r=mid-1;
}
if(l==1)break;
ans+=l-1;
}
for(int i=1;i<=64;i+=2){
ll l=1,r=1e9;
while(l<r){
ll mid=(l+r+1)>>1;
if(mid*mid<=min((ll)A,(ll)C*2/i)&&fpow(mid,i)<=B)l=mid;
else r=mid-1;
}
ans+=r/2;
}
for(int i=3;i<=64;i++){
for(int j=1;j<=64;j++){
if(gcd(i,j)>1)continue;
int l=-1,r=vec[i].size()-1;
ll up=min((ll)A,(ll)(min((double)C*1.0/j*i,1e18)));
while(l<r){
int mid=(l+r+1)>>1;
if(fpow(vec[i][mid],i)<=up&&fpow(vec[i][mid],j)<=B)l=mid;
else r=mid-1;
}
if(r==-1)break;
ans+=r+1;
}
}
cout<<ans<<"\n";
}
void init(){
for(int i=3;i<=64;i++){
for(ll j=2;j<=1e6;j++){
ll v=fpow(j,i);
if(v>=1e18)break;
vec[i].push_back(j);
vec2[i].push_back(v);
}
}
}
int main(){
cin>>t;
init();
while(t--)work();
return 0;
}