#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
bool checkPrime(long long x)
{
for(long long i=2;i<=ceil(sqrt((double)x));++i)
if(x%i==0)
return false;
return true;
}
const int N=1000008;
bool mark[N+100];
int main()
{
for(int i=2;i<=N/2;++i)
{
if(mark[i]==false)
{
int b=i+i;
while(b<=N)
{
mark[b]=true;
b+=i;
}
}
}
vector<int> primes;
for(int i=2;i<=N;++i)
if(!mark[i])
primes.push_back(i);
int t;
cin>>t;
for(int k=1;k<=t;++k)
{
long long n;
cin>>n;
long long ans=0;
for(int i=0;i<primes.size();++i)
{
if(n%primes[i]==0)
{
ans=primes[i];
while(n%primes[i]==0)
n/=primes[i];
}
}
if(checkPrime(n) && n>ans)
ans=n;
cout<<ans<<endl;
}
}