#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=5e6+7;
int prime[maxn],cnt=0;
void getprime()
{
memset(prime,0,sizeof(prime));
for(int i=2;i<=maxn;i++)
{
if(!prime[i]) prime[++cnt]=i;
for(int j=1;j<=cnt;j++)
{
if(i*prime[j]>=maxn) break;
prime[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
int main ()
{
getprime();
int t;
scanf("%d",&t);
for(int cas=1;cas<=t;cas++)
{
long long n ;
int ans=0,res;
bool flag=true;
scanf("%lld",&n);
if(n<0) { n=-n,flag=false;}
for(int i=1;i<=cnt&&n>=prime[i]*prime[i];i++)
{
res=0;
if(n%prime[i]==0)
while(n%prime[i]==0) {res++,n/=prime[i];}
if(!flag&&res) while(res%2==0&&res) res>>=1;
ans=gcd(ans,res);
}
if(n>1) ans=1;
printf("Case %d: %d\n",cas,ans);
}
return 0;
}