import sys import math MOD = 10**9 + 7 def mat_mult(a, b, mod): n = len(a) res = [[0] * n for _ in range(n)] for i in range(n): for k in range(n): if a[i][k] == 0: continue for j in range(n): res[i][j] = (res[i][j] + a[i][k] * b[k][j]) % mod return res def mat_pow(mat, power, mod): n = len(mat) res = [[0] * n for _ in range(n)] for i in range(n): res[i][i] = 1 while power > 0: if power % 2 == 1: res = mat_mult(res, mat, mod) mat = mat_mult(mat, mat, mod) power //= 2 return res def main(): M, K = map(int, sys.stdin.readline().split()) # Construct transition matrix T = [[0] * M for _ in range(M)] for i in range(M): for j in range(M): add = 1 mult = 0 if i == 0: if j == 0: mult = M else: mult = 0 else: d = math.gcd(i, M) if j % d == 0: mult = d else: mult = 0 T[i][j] = (add + mult) % MOD # Compute matrix power pow_mat = mat_pow(T, K, MOD) print(pow_mat[0][0] % MOD) if __name__ == "__main__": main()