def powmod(n,pow,mod): val = 1 while pow > 0: if pow & 1: val = (val * n) % mod pow = pow >> 1 n = (n * n) % mod return val n, m = map(int, input().split()) p = 10**9+7 val = 2 renzoku = 0 ans = 1 while val * val <= n: if n % val == 0: n = n // val renzoku += 1 else: if renzoku >= 1: kari = 1 div = 1 for i in range(renzoku): div = (div * (i+1)) % p kari = (kari * (m+renzoku-i)) % p kari = (kari * powmod(div,p-2,p)) % p ans = (ans * kari) % p renzoku = 0 val += 1 if n == val: renzoku += 1 else: ans = ans * (m+1) % p if renzoku >= 1: kari = 1 div = 1 for i in range(renzoku): div = (div * (i+1)) % p kari = (kari * (m+renzoku-i)) % p kari = (kari * powmod(div,p-2,p)) % p ans = (ans * kari) % p print("{}".format(ans))