P = 10**9+7 def pow(b,e) ret = 1 while e > 0 if (e&1) == 1 then ret = ret * b % P end b = b * b % P e>>=1 end return ret end N,M = gets.split().map{|s| s.to_i} f = [0]*(M+1) fi = [0]*(M+1) f[0] = 1 (1..M).each{|i| f[i] = i*f[i-1]%P} fi[M] = pow(f[M],P-2) (1..M).reverse_each{|i| fi[i-1] = i*fi[i]%P} p (0..M-1).map{|k| f[M]*fi[k]*fi[M-k]*pow(M-k,N)*((-1)**(k%2)) % P}.inject(:+) % P