#include <bits/stdc++.h>
#include <bitset>
using namespace std;
#define int long long
#define dd double
#define ld long double
#define ull unsigned long long
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define el "\n"
#define Arwa ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fix(x) cout << fixed << setprecision(x)
#define all(v) v.begin(),v.end()
#define dpp(arr,val) memset(arr,val,sizeof(arr))
#define mod 1e9+7
const int N = 1e5 + 5;
//todo اى ويل بريبير ماى بيبرز تو بى ذا بيست ان زيس وورلد
//prime factorization
map<int,int>pf;
void primeFact(int n)
{
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
int cnt=0;
while(n%i==0) n/=i,cnt++;
pf[i]+=cnt;
}
}
if(n>1) pf[n]+=1;
}
void HereWeGoAgain()
{
pf.clear();
string s;
cin>>s;
int k=0,num=0;
for(int i=0;i<s.length();i++)
{
if(s[i]=='!') k++;
else
{
num*=10;
num+=(s[i]-'0');
}
}
// cout<<num<<' '<<k<<el;
for(int i=num;i>=1;i-=k)
{
primeFact(i);
}
int dividers=1;
for(auto it:pf)// cout<<it.first<<' '<<it.second<<' '; cout<<el;
{
if(it.second)
{
if(dividers>LONG_MAX/(it.second+1)) { cout<<"Infinity\n"; return; }
else dividers*=(it.second+1);
}
}
cout<<dividers<<'\n';
}
int32_t main()
{
Arwa
int t=1;
cin>>t;
for(int i=1;i<=t;i++)
{
cout<<"Case "<<i<<": ";
HereWeGoAgain();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxiaXRzZXQ+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGRkIGRvdWJsZQojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIHllcyBjb3V0IDw8ICJZRVNcbiIKI2RlZmluZSBubyBjb3V0IDw8ICJOT1xuIgojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBBcndhIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBmaXgoeCkgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oeCkKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBkcHAoYXJyLHZhbCkgbWVtc2V0KGFycix2YWwsc2l6ZW9mKGFycikpCiNkZWZpbmUgbW9kIDFlOSs3CmNvbnN0IGludCBOID0gMWU1ICsgNTsKLy90b2RvINin2Ykg2YjZitmEINio2LHZitio2YrYsSDZhdin2Ykg2KjZitio2LHYsiDYqtmIINio2Ykg2LDYpyDYqNmK2LPYqiDYp9mGINiy2YrYsyDZiNmI2LHZhNivCi8vcHJpbWUgZmFjdG9yaXphdGlvbgptYXA8aW50LGludD5wZjsKdm9pZCBwcmltZUZhY3QoaW50IG4pCnsKICAgIAogICAgZm9yKGludCBpPTI7aSppPD1uO2krKykKICAgIHsKICAgICAgICBpZihuJWk9PTApCiAgICAgICAgewogICAgICAgIGludCBjbnQ9MDsKICAgICAgICB3aGlsZShuJWk9PTApIG4vPWksY250Kys7CiAgICAgICAgcGZbaV0rPWNudDsKICAgICAgICB9CiAgICB9CiAgIGlmKG4+MSkgcGZbbl0rPTE7Cn0Kdm9pZCBIZXJlV2VHb0FnYWluKCkKewogIHBmLmNsZWFyKCk7CiAgc3RyaW5nIHM7CiAgY2luPj5zOwogIGludCBrPTAsbnVtPTA7CiAgZm9yKGludCBpPTA7aTxzLmxlbmd0aCgpO2krKykKICB7CiAgICBpZihzW2ldPT0nIScpIGsrKzsKICAgIGVsc2UKICAgIHsKICAgICAgICBudW0qPTEwOwogICAgICAgIG51bSs9KHNbaV0tJzAnKTsKICAgIH0KICB9CiAvLyBjb3V0PDxudW08PCcgJzw8azw8ZWw7CiAgZm9yKGludCBpPW51bTtpPj0xO2ktPWspCiAgewogICAgcHJpbWVGYWN0KGkpOwogIH0KICBpbnQgZGl2aWRlcnM9MTsKICBmb3IoYXV0byBpdDpwZikvLyBjb3V0PDxpdC5maXJzdDw8JyAnPDxpdC5zZWNvbmQ8PCcgJzsgY291dDw8ZWw7CiAgewogICAgaWYoaXQuc2Vjb25kKQogICAgewogICAgaWYoZGl2aWRlcnM+TE9OR19NQVgvKGl0LnNlY29uZCsxKSkgeyBjb3V0PDwiSW5maW5pdHlcbiI7IHJldHVybjsgfQogICAgZWxzZSBkaXZpZGVycyo9KGl0LnNlY29uZCsxKTsKICAgIH0KICB9CiAgY291dDw8ZGl2aWRlcnM8PCdcbic7Cn0KCmludDMyX3QgbWFpbigpIAp7CiAgIAogICAgQXJ3YQogICAgaW50IHQ9MTsKICAgIGNpbj4+dDsKICAgIGZvcihpbnQgaT0xO2k8PXQ7aSsrKQogICAgewogICAgY291dDw8IkNhc2UgIjw8aTw8IjogIjsKICAgIEhlcmVXZUdvQWdhaW4oKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cgo=