#include<iostream> #include<cstdio> #define int long long
usingnamespace std;
constint mod = 998244353; constint N = 310; int n, m; int f[N][N * 30]; int p[N], c[N], tot; int d;
intqpow(int a, int b){ int res = 1; while (b) { if (b & 1) res = res * a % mod; a = a * a % mod; b >>= 1; } return res; }
int ans = 1;
intdp(int c){ for (int i = 0; i <= 2 * m; ++i) { for (int j = 0; j <= m * c; ++j) { f[i][j] = 0; } } f[0][0] = 1; for (int i = 1; i <= 2 * m; ++i) { for (int j = 0; j <= m * c; ++j) { for (int k = 0; k <= min(c, j); ++k) { f[i][j] = (f[i][j] + f[i - 1][j - k]) % mod; } } } return f[2 * m][m * c]; }
signedmain(){ scanf("%lld%lld", &n, &m); d = 1; for (int i = 2; i * i <= n; ++i) { if (n % i == 0) { p[++tot] = i; while (n % i == 0) n /= i, ++c[tot]; d = d * (c[tot] + 1) % mod; } } if (n > 1) p[++tot] = n, ++c[tot], d = d * 2 % mod; for (int i = 1; i <= tot; ++i) { ans = ans * dp(c[i]) % mod; } printf("%lld\n", (qpow(d, 2 * m) + ans) % mod * qpow(2, mod - 2) % mod); return0; }