n,k = map(int,input().split()) mod = 10**9+7 def dfs(n,k): if k == 0: return n if n == 1: return 1 if n == 2: s = (k+1)//2 p = pow(2,s,mod-1) if k%2: return pow(3,p,mod) else: return pow(2,p,mod) ans = 1 now = n for i in range(2,int(n**0.5)+1): if now%i: continue num = 0 while now%i == 0: now //= i num += 1 ans *= pow(dfs(i+1,k-1),num,mod) ans %= mod if now != 1: ans *= dfs(now+1,k-1) ans %= mod return ans print(dfs(n,k))