kaijou = [1] kaijou_ = [1] mod = 10**9 + 7 for i in range(1,10**5+1): k = kaijou[-1]*i k %= mod kaijou.append(k) k = pow(k,mod-2,mod) kaijou_.append(k) def comb(n,r): res = kaijou_[n-r]*kaijou_[r] res %= mod res *= kaijou[n] res %= mod return res N,M = map(int,input().split()) ans = 0 for k in range(M): res = comb(M,k) if k % 2 == 1: res *= -1 res %= mod res *= pow(M-k,N,mod) res %= mod ans += res ans %= mod print(ans)