N, M = map(int, input().split()) MOD = 10**9+7 if N < M: print(0) exit() fact = [1]*(M+1) inv = [1]*(M+1) ifact = [1]*(M+1) for i in range(2, M+1): inv[i] = MOD-(inv[MOD % i]*(MOD//i) % MOD) fact[i] = fact[i-1]*i % MOD ifact[i] = ifact[i-1]*inv[i] % MOD ans = 0 for i in range(M): v = pow(M-i, N, MOD) comb = fact[M]*ifact[i] % MOD*ifact[M-i] % MOD ans += v*comb*(-1)**(i % 2) % MOD ans %= MOD print(ans)