#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 5;
long long fac[2 * maxn];
int q, x, y;
long long mul(long long n, long long k) {
  long long res = 1;
  while (k) {
    if (k & 1) res = res * n % mod;
    n = n * n % mod;
    k >>= 1;
  }
  return res;
}
void init() {
  fac[0] = 1;
  for (int i = 1; i < 2 * maxn; i++) fac[i] = (fac[i - 1] * i) % mod;
}
long long C(long long n, long long m) {
  return (fac[n] * mul(fac[m], mod - 2)) % mod * mul(fac[n - m], mod - 2) % mod;
}
int main() {
  init();
  cin >> q;
  while (q--) {
    scanf("%d%d", &x, &y);
    int c = 0;
    long long ans = mul(2, y - 1);
    for (int i = 2; i * i <= x; i++) {
      if (x % i == 0) {
        int t = 0;
        while (x % i == 0) {
          t++;
          x /= i;
        }
        ans = (ans * C(t + y - 1, t)) % mod;
      }
    }
    if (x > 1) ans = (ans * y) % mod;
    printf("%d\n", ans);
  }
  return 0;
}
