#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
// #define test TEST
const int maxn=1e5+5;
const int mod=1e9+7;
ll num[maxn<<1],a[maxn];
ll mu[maxn];
void mobius(ll mn){
mu[1]=1;
for(ll i=1;i<=mn;i++){
for(ll j=i+i;j<=mn;j+=i){
mu[j]-=mu[i];
}
}
}
ll gcd(ll a,ll b){
return b==0?a:gcd(b,a%b);
}
ll qpow(ll a,ll b){
ll ans=1;
while(b){
if(b&1LL){
ans=(ans*a)%mod;
}
a=(a*a)%mod;
b>>=1;
}
return ans;
}
int main(int argc, char const *argv[])
{
#ifdef test
freopen("test.txt","r",stdin);
#endif
mobius(100000);
int T,cas=1;
ll n;
scanf("%d",&T);
while(T--){
memset(num,0,sizeof(num));
scanf("%lld",&n);
ll Min=100005;
for(ll i=1;i<=n;i++){
scanf("%lld",&a[i]);
Min=min(Min,a[i]);
}
for(ll i=1;i<=n;i++){
num[a[i]]++;
}
for(ll i=2;i<=200000;i++){
num[i]+=num[i-1];
}
ll ans=0;
for(ll i=2;i<=Min;i++){
ll Gcd=1;
for(ll j=1;j*i<=100000;j++){
Gcd=(Gcd*qpow(j,num[(j+1)*i-1]-num[(j)*i-1]))%mod;
}
ans=(ans-Gcd*mu[i]%mod+mod)%mod;
}
printf("Case #%d: %lld\n",cas++,ans);
}
return 0;
}