#include<iostream>
#include<cstring>
using namespace std;
const int N = 100;
int m , p[N] ,c[N] , ans = 0;
const int MAX_N = 100;
int v[MAX_N],prime[MAX_N],k;
void Linear_Sieve(int n)
{
memset (v,0,sizeof(v));
k = 0;
for(int i = 2;i <= n;i++)
{
if(v[i] == 0)
{
v[i] = i;
prime[++k] = i;
}
for(int j = 1;j <= k;j++)
{
if(prime[j] > v[i] || prime[i] > n/i)
break;
v[i * prime[j]] = prime[j];
}
}
}
void Prime_Factorization(int n)
{
m = 0;
Linear_Sieve(n);
for(int i = 1 ; i <= k ; i++)
{
if(n % prime[i] == 0)
{
p[++m] = prime[i] , c[m] = 0;
while(n % prime[i] == 0)
n /= prime[i] , c[m]++;
}
}
if(n > 1)
p[++m] = n , c[m] = 1;
for(int i = 1;i <= m;i++)
{
if(c[i] % 2 == 0)
p[i] = 0;
}
for(int i = 1;i <= m;i++)
{
ans ^= p[i];
}
cout << ans << endl;
ans = 0;
}
main()
{
int T;
cin >> T;
for(int i = 1;i <= T;i++)
{
int n;
cin >> n;
Prime_Factorization(n);
}
return 0;
}