MOD = 10 ** 9 + 7 def mt(A, B): C = [[0] * M for _ in range(M)] for i in range(M): for j in range(M): tmp = 0 for k in range(M): tmp += A[i][k] * B[k][j] tmp %= MOD C[i][j] = tmp return C M,K = map(int,input().split()) A = [[0] * M for _ in range(M)] X = [[0] * M for _ in range(M)] for i in range(M): X[i][i] = 1 for i in range(M): for j in range(M): A[(i + j) % M][j] += 1 A[(i * j) % M][j] += 1 while K > 0: if K & 1: X = mt(A,X) A = mt(A,A) K >>= 1 print(X[0][0])