func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e6 + 50;   int mod = 1e9 + 7;   long long add(long long a, long long b) {     return (a % mod + b % mod + mod) % mod;   }   long long mul(long long a, long long b) { return (a % mod * (b % mod)) % mod; }   int dp[N][3];   int solve(int rem, int val) {     if (rem == 0) return val == 1;     int &ans = dp[rem][val];     if (~ans) return ans;     ans = solve(rem - 1, val);     ans = add(ans, solve(rem - 1, val * -1));     return ans;   }   int dp2[N][20];   int solve2(int remp, int rem) {     if (remp == 0) return rem == 0;     int &ans = dp2[remp][rem];     if (~ans) return ans;     ans = solve2(remp - 1, rem);     if (rem) ans = add(ans, solve2(remp, rem - 1));     return ans;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     memset(dp, -1, sizeof(dp));     memset(dp2, -1, sizeof(dp2));     int t;     cin >> t;     while (t--) {       int x, y;       cin >> x >> y;       map<int, int> co;       for (int i = 2; i * i <= x; i++) {         while (x % i == 0) {           x /= i;           co[i]++;         }       }       if (x != 1) co[x]++;       long long ans = solve(y, 1);       for (auto it : co) ans = mul(ans, solve2(y, it.second));       cout << ans <<   n ;     }     return 0;   }   