#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll const MX = (ll)1e5;
long long const mod = (ll)1e9 + 7;
bool num[MX];
ll prime[MX];
void sieve() {
num[0] = num[1] = 1;
for(int i = 4; i < MX; i += 2) {
num[i] = 1;
}
for(int i = 3; i < sqrt(MX); i += 2) {
if(num[i] == 0) {
for(int j = i * i; j < MX; j += i) {
num[j] = 1;
}
}
}
int k = 1;
prime[0] = 2;
for(int i = 3; i < MX; i += 2) {
if(num[i] == 0) {
prime[k++] = i;
}
}
}
ll BigMod(ll a, ll e) {
if(e == -1) {
e = mod - 2;
}
ll r = 1;
while(e) {
if(e & 1) {
r *= a, r %= mod;
}
a *= a, a %= mod, e >>= 1;
}
return r % mod;
}
int main() {
//freopen("output.txt","w",stdout);
sieve();
ll n, a, m;
int t;
scanf("%d", &t);
for(int cs = 1; cs <= t; cs++) {
scanf("%lld%lld", &n, &m);
ll sq = sqrt(n);
ll cnt = 0;
ll sum = 1;
for(ll i = 0; i <= n; i++) {
cnt = 0;
if(prime[i] * prime[i] > n) {
break;
}
while(n % prime[i] == 0) {
n /= prime[i];
cnt++;
}
cnt = (cnt * m);
ll x = BigMod(prime[i], cnt + 1) - 1;
ll y = (BigMod(prime[i] - 1, -1) * x) % mod;
sum = (sum * y) % mod;
}
if(n != 1) {
if(n % mod != 0) {
ll x = BigMod(n, m + 1) - 1;
ll y = (BigMod(n - 1, -1) * x) % mod;
sum = (sum * y) % mod;
}
}
printf("Case %d: %lld\n", cs, sum % mod);
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKbGwgY29uc3QgTVggPSAobGwpMWU1Owpsb25nIGxvbmcgY29uc3QgbW9kID0gKGxsKTFlOSArIDc7CmJvb2wgbnVtW01YXTsKbGwgcHJpbWVbTVhdOwoKdm9pZCBzaWV2ZSgpIHsKCW51bVswXSA9IG51bVsxXSA9IDE7CgoJZm9yKGludCBpID0gNDsgaSA8IE1YOyBpICs9IDIpIHsKCQludW1baV0gPSAxOwoJfQoKCWZvcihpbnQgaSA9IDM7IGkgPCBzcXJ0KE1YKTsgaSArPSAyKSB7CgkJaWYobnVtW2ldID09IDApIHsKCQkJZm9yKGludCBqID0gaSAqIGk7IGogPCBNWDsgaiArPSBpKSB7CgkJCQludW1bal0gPSAxOwoJCQl9CgkJfQoJfQoKCWludCBrID0gMTsKCXByaW1lWzBdID0gMjsKCglmb3IoaW50IGkgPSAzOyBpIDwgTVg7IGkgKz0gMikgewoJCWlmKG51bVtpXSA9PSAwKSB7CgkJCXByaW1lW2srK10gPSBpOwoJCX0KCX0KfQoKbGwgQmlnTW9kKGxsIGEsIGxsIGUpIHsKCWlmKGUgPT0gLTEpIHsKCQllID0gbW9kIC0gMjsKCX0KCglsbCByID0gMTsKCgl3aGlsZShlKSB7CgkJaWYoZSAmIDEpIHsKCQkJciAqPSBhLCByICU9IG1vZDsKCQl9CgoJCWEgKj0gYSwgYSAlPSBtb2QsIGUgPj49IDE7Cgl9CgoJcmV0dXJuIHIgJSBtb2Q7Cn0KCmludCBtYWluKCkgewoJLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKCXNpZXZlKCk7CglsbCBuLCBhLCBtOwoJaW50IHQ7CglzY2FuZigiJWQiLCAmdCk7CgoJZm9yKGludCBjcyA9IDE7IGNzIDw9IHQ7IGNzKyspIHsKCgkJc2NhbmYoIiVsbGQlbGxkIiwgJm4sICZtKTsKCQlsbCBzcSA9IHNxcnQobik7CgkJbGwgY250ID0gMDsKCQlsbCBzdW0gPSAxOwoKCQlmb3IobGwgaSA9IDA7IGkgPD0gbjsgaSsrKSB7CgkJCWNudCA9IDA7CgoJCQlpZihwcmltZVtpXSAqIHByaW1lW2ldID4gbikgewoJCQkJYnJlYWs7CgkJCX0KCgkJCXdoaWxlKG4gJSBwcmltZVtpXSA9PSAwKSB7CgkJCQluIC89IHByaW1lW2ldOwoJCQkJY250Kys7CgkJCX0KCgkJCWNudCA9IChjbnQgKiBtKTsKCQkJbGwgeCA9IEJpZ01vZChwcmltZVtpXSwgY250ICsgMSkgLSAxOwoJCQlsbCB5ID0gKEJpZ01vZChwcmltZVtpXSAtIDEsIC0xKSAqIHgpICUgbW9kOwoJCQlzdW0gPSAoc3VtICogeSkgJSBtb2Q7CgkJfQoKCQlpZihuICE9IDEpIHsKCQkJaWYobiAlIG1vZCAhPSAwKSB7CgkJCQlsbCB4ID0gQmlnTW9kKG4sIG0gKyAxKSAtIDE7CgkJCQlsbCB5ID0gKEJpZ01vZChuIC0gMSwgLTEpICogeCkgJSBtb2Q7CgkJCQlzdW0gPSAoc3VtICogeSkgJSBtb2Q7CgkJCX0KCQl9CgoJCXByaW50ZigiQ2FzZSAlZDogJWxsZFxuIiwgY3MsIHN1bSAlIG1vZCk7Cgl9Cn0=