#include <iostream>
#include <cstring>
#include <math.h>
#include <stdio.h>
#include <vector>
#define ull unsigned long long
#define max(a,b) a>=b?a:b
using namespace std;
int ans[200];
int prime[1001];
vector<int> v;
ull _MAX;
void primegenerator()
{
double p=sqrt(1001);
v.push_back(2);
for(int i=3;i<p;i+=2)
{
if(prime[i]==0)
for(int j=i*2;j<1001;j+=i)
prime[j]=1;
}
for(int i=3;i<1001;i+=2)
{
if(prime[i]==0)
v.push_back(i);
}
}
int main()
{
string s;
int _max=0;
int t,cnt,num;
int kase=1;
_MAX = 1000000000;
_MAX *=_MAX;
primegenerator();
cout<<v.size()<<"\n";
cin>>t;
while(t--)
{
cin>>s;
cnt=0;
num=0;
_max=0;
memset(ans,0,sizeof(ans));
for(int i=0;i<s.size();i++)
{
if(s[i]=='!')
cnt++;
else
{
num*=10;
num+=(s[i]-'0');
}
}
//cout<<num<<" "<<cnt<<"\n";
cout<<"Case "<<kase++<<": ";
while(num>1)
{
int tmp=num;
int j=0;
while(tmp>1)
{
if(tmp%v[j]==0)
{
tmp/=v[j];
ans[j]++;
//_max=max(j,_max);
}
else
j++;
}
num-=cnt;
}
ull res=1;
int f=1;
for(int i=0;i<v.size();i++)
{
if(ans[i]!=0)
res*=(ans[i]+1);
if(res>_MAX)
{
f=0;
break;
}
}
if(f==1)
cout<<res<<"\n";
else
cout<<"Infinity\n";
}
return 0;
}