from collections import * def factorization(n): arr = [] temp = n for i in range(2, int(-(-n**0.5//1))+1): if temp%i==0: cnt=0 while temp%i==0: cnt+=1 temp //= i arr.append([i, cnt]) if temp!=1: arr.append([temp, 1]) return arr N, K = map(int, input().split()) mod = 10**9 + 7 ans = 1 D = defaultdict(int) for i, cnt in factorization(N): D[i] += cnt while K: new = defaultdict(int) if len(D) == 1: if 2 in D or 3 in D: break if len(D) == 2: if 2 in D and 3 in D: break K -= 1 for k, v in D.items(): for i, cnt in factorization(k + 1): new[i] += cnt * v new, D = D, new if K == 0: ans = 1 for k, v in D.items(): ans *= pow(k, v, mod) ans %= mod print(ans) else: m = K//2 K %= 2 D[2] = D[2] * pow(2, m, mod - 1) D[3] = D[3] * pow(2, m, mod - 1) if K: D[2], D[3] = D[3] * 2, D[2] ans = pow(2, D[2], mod) * pow(3, D[3], mod) % mod print(ans)