import sys, time, random from collections import deque, Counter, defaultdict input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 63 - 1 mod = 10 ** 9 + 7 maxi = 10 ** 6 + 100 prime = [i for i in range(maxi)] for i in range(2, maxi): if prime[i] == i: for j in range(2 * i, maxi, i): prime[j] = i n, k = mi() while k > 0: now = n C = Counter() while now > 1: C[prime[now]] += 1 now //= prime[now] S = set(C.keys()) S.discard(2) S.discard(3) if S: k -= 1 n = 1 for v, c in C.items(): n *= pow(v + 1, c) else: break if k == 0: ans = n else: p = 0 while n % 2 == 0: p += 1 n //= 2 q = 0 while n % 3 == 0: q += 1 n //= 3 q = pow(2, (k + 1) // 2) * q p = pow(2, k // 2) * p if k % 2: ans = pow(2, q, mod) * pow(3, p, mod) ans %= mod else: ans = pow(2, p, mod) * pow(3, q, mod) ans %= mod print(ans)