p = 10**9+7 N,M = map(int,input().split()) F = [1]; FI = [0]*(M+1) for i in range(1,M+1):F += [i*F[i-1]%p] FI[M] = pow(F[M],p-2,p) for i in range(M,0,-1):FI[i-1] = i*FI[i]%p print (sum(F[M]*FI[k]*FI[M-k]*pow(M-k,N,p)*((-1)**(k%2)) for k in range(M))%p)