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