f=[1]*10**6;g=[1]*len(f);mod=10**9+7 for i in range(1,len(f)): f[i]=f[i-1]*i%mod g[-1]=pow(f[-1],mod-2,mod) for i in range(len(f)-1,0,-1): g[i-1]=g[i]*i%mod ans=0 n,m=map(int,input().split());d=1 for i in range(m,0,-1): ans+=pow(i,n,mod)*f[m]%mod*g[i]%mod*g[m-i]%mod*d ans%=mod;d*=-1 print(ans)