#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;
	}
}