p = 10**9+7 N,M = map(int,raw_input().split()) F = [1]; FI = [0]*(M+1) for i in xrange(1,M+1):F += [i*F[i-1]%p] FI[M] = pow(F[M],p-2,p) for i in xrange(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 xrange(M))%p