def aa(q,w): global m,mod res=[[0]*m for i in range(m)] for i in range(m): for j in range(m): for l in range(m): res[j][l]+=q[j][i]*w[i][l] res[j][l]%=mod return res m,k=map(int,input().split()) mat=[[0]*m for i in range(m)] mod=10**9+7 for i in range(m): for j in range(m): mat[i][(i+j)%m]+=1 mat[i][(i*j)%m]+=1 ans=[[0]*m for i in range(m)] ans[0][0]=1 while k: if k&1: ans=aa(ans,mat) mat=aa(mat,mat);k>>=1 print(ans[0][0])