#include<bits/stdc++.h>
using namespace std;
int l=0,n[1000006],t,maxn;
bool v[(int)1e8+1];
int s[(int)1e8];
int main()
{
t=read();
for(int i=1;i<=t;i++)
{
n[i]=read();
maxn=max(n[i],maxn);
}
for(int i=2;i<=maxn/2;i++)
{
if(v[i]==0) s[l++]=i;
for(int j=0;j<l&&i*s[j]<=maxn;j++)
{
v[i*s[j]]=1;
if(i%s[j]==0) break;
}
}
for(int i=1;i<=t;i++)
{
int ans=0;
for(int j=0;j<l;j++)
{
if(s[j]>n[i])
break;
while(n[i]%(s[j]*s[j])==0)
n[i]/=s[j]*s[j];
if(n[i]%s[j]==0)
{
n[i]/=s[j];
ans^=s[j];
}
if(n[i]==1)
break;
}
if(n[i]>1)
{
cout<<n[i]<<"\n";
continue;
}
cout<<ans<<'\n';
}
return 0;
}