#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define sl(n) scanf("%lld", &n)
#define pll pair <ll, ll>
#define ms(n, i) memset(n, i, sizeof(n))
#define pf printf
const ll mod = 10000007;
#define x first
#define y second
pll extendedEuclid(ll a, ll b)
{
if(b == 0) return pll(1, 0);
else
{
pll d = extendedEuclid(b, a % b);
return pll(d.y, d.x - d.y * (a / b));
}
}
ll modularInverse(ll a, ll n)
{
pll ret = extendedEuclid(a, n);
return ((ret.x % n) + n) % n;
}
ll fastPow(ll x, ll n)
{
ll ret = 1;
while (n)
{
if (n & 1) ret = (ret * x) % mod;
x = (x*x) % mod;
n >>= 1;
}
return ret % mod;
}
ll sumGeo(ll a, ll r, ll n)
{
ll den = modularInverse(r-1, mod);
ll nom = fastPow(r, n) - 1;
if(nom < 0) nom += mod;
nom = (a * nom) % mod;
return (nom * den) % mod;
}
ll cnt[10];
int main()
{
ll t, n, x;
cin >> t;
while(t--) {
sl(n), sl(x);
assert(1 <= x && x <= (ll)1e17);
for(ll i = 2; i <= n; i++) {
while(n % i == 0) {
cnt[i]++;
n /= i;
}
}
cnt[2] += x, cnt[5] += x;
ll ans = 1;
for(ll i = 2; i <= 9; i++) {
if(i == 2) ans = (ans * sumGeo(2, 2, cnt[2])) % mod;
else ans = (ans * sumGeo(1, i, cnt[i] + 1)) % mod;
}
pf("%lld\n", ans);
ms(cnt, 0);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHNsKG4pIHNjYW5mKCIlbGxkIiwgJm4pCiNkZWZpbmUgcGxsIHBhaXIgPGxsLCBsbD4KI2RlZmluZSBtcyhuLCBpKSBtZW1zZXQobiwgaSwgc2l6ZW9mKG4pKQojZGVmaW5lIHBmIHByaW50ZgoKY29uc3QgbGwgbW9kID0gMTAwMDAwMDc7CgojZGVmaW5lIHggZmlyc3QKI2RlZmluZSB5IHNlY29uZApwbGwgZXh0ZW5kZWRFdWNsaWQobGwgYSwgbGwgYikKewogICAgaWYoYiA9PSAwKSByZXR1cm4gcGxsKDEsIDApOwogICAgZWxzZQogICAgewogICAgICAgIHBsbCBkID0gZXh0ZW5kZWRFdWNsaWQoYiwgYSAlIGIpOwogICAgICAgIHJldHVybiBwbGwoZC55LCBkLnggLSBkLnkgKiAoYSAvIGIpKTsKICAgIH0KfQoKbGwgbW9kdWxhckludmVyc2UobGwgYSwgbGwgbikKewogICAgcGxsIHJldCA9IGV4dGVuZGVkRXVjbGlkKGEsIG4pOwogICAgcmV0dXJuICgocmV0LnggJSBuKSArIG4pICUgbjsKfQoKbGwgZmFzdFBvdyhsbCB4LCBsbCBuKQp7CiAgICBsbCByZXQgPSAxOwogICAgd2hpbGUgKG4pCiAgICB7CiAgICAgICAgaWYgKG4gJiAxKSByZXQgPSAocmV0ICogeCkgJSBtb2Q7CiAgICAgICAgeCA9ICh4KngpICUgbW9kOwogICAgICAgIG4gPj49IDE7CiAgICB9CiAgICByZXR1cm4gcmV0ICUgbW9kOwp9CgpsbCBzdW1HZW8obGwgYSwgbGwgciwgbGwgbikKewogICAgbGwgZGVuID0gbW9kdWxhckludmVyc2Uoci0xLCBtb2QpOwoKICAgIGxsIG5vbSA9IGZhc3RQb3cociwgbikgLSAxOwogICAgaWYobm9tIDwgMCkgbm9tICs9IG1vZDsKCiAgICBub20gPSAoYSAqIG5vbSkgJSBtb2Q7CiAgICByZXR1cm4gKG5vbSAqIGRlbikgJSBtb2Q7Cn0KCmxsIGNudFsxMF07CgppbnQgbWFpbigpCnsKICAgIGxsIHQsIG4sIHg7CiAgICBjaW4gPj4gdDsKCiAgICB3aGlsZSh0LS0pIHsKICAgICAgICBzbChuKSwgc2woeCk7CgogICAgICAgIGFzc2VydCgxIDw9IHggJiYgeCA8PSAobGwpMWUxNyk7CgogICAgICAgIGZvcihsbCBpID0gMjsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgd2hpbGUobiAlIGkgPT0gMCkgewogICAgICAgICAgICAgICAgY250W2ldKys7CiAgICAgICAgICAgICAgICBuIC89IGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNudFsyXSArPSB4LCBjbnRbNV0gKz0geDsKICAgICAgICBsbCBhbnMgPSAxOwoKICAgICAgICBmb3IobGwgaSA9IDI7IGkgPD0gOTsgaSsrKSB7CiAgICAgICAgICAgIGlmKGkgPT0gMikgYW5zID0gKGFucyAqIHN1bUdlbygyLCAyLCBjbnRbMl0pKSAlIG1vZDsKICAgICAgICAgICAgZWxzZSAgICAgYW5zID0gKGFucyAqIHN1bUdlbygxLCBpLCBjbnRbaV0gKyAxKSkgJSBtb2Q7CiAgICAgICAgfQoKICAgICAgICBwZigiJWxsZFxuIiwgYW5zKTsKCiAgICAgICAgbXMoY250LCAwKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=