import sys input = sys.stdin.readline M,K=map(int,input().split()) mod=10**9+7 MAT=[[1]*M for i in range(M)] for i in range(M): for j in range(M): MAT[i*j%M][i]+=1 def prod(A,B,k,l,m): C=[[None for i in range(m)] for j in range(k)] for i in range(k): for j in range(m): ANS=0 for pl in range(l): ANS=(ANS+A[i][pl]*B[pl][j])%mod C[i][j]=ANS return C def plus(A,B,k,l): C=[[None for i in range(l)] for j in range(k)] for i in range(k): for j in range(l): C[i][j]=(A[i][j]+B[i][j])%mod return C X=[[0]*M] X[0][0]=1 POWA=[MAT] for i in range(60): POWA.append(prod(POWA[-1],POWA[-1],M,M,M)) while K: X=prod(X,POWA[K.bit_length()-1],1,M,M) K-=1<<(K.bit_length()-1) print(X[0][0])