import sys readline = sys.stdin.readline MOD = 10**9+7 def frac(limit): frac = [1]*limit for i in range(2,limit): frac[i] = i * frac[i-1]%MOD fraci = [None]*limit fraci[-1] = pow(frac[-1], MOD -2, MOD) for i in range(-2, -limit-1, -1): fraci[i] = fraci[i+1] * (limit + i + 1) % MOD return frac, fraci def comb(a, b): if not a >= b >= 0: return 0 return frac[a]*fraci[b]*fraci[a-b]%MOD frac, fraci = frac(1341398) N, M = map(int, readline().split()) ans = pow(M, N, MOD) for k in range(1, M): ans = (ans + (-1)**k * comb(M, k) * pow(M-k, N, MOD)) print(ans % MOD)