n, m = map(int, input().split()) mod = 10**9+7 P = [1]*(m+1) Q = [1]*(m+1) inv = [1]*(m+1) for i in range(2, m+1): P[i] = P[i-1]*i%mod a, b = divmod(mod, i) # print(a, b, inv[b], i) inv[i] = (-a*inv[b])%mod Q[i] = Q[i-1]*inv[i]%mod comb = lambda x, y: P[x]*Q[y]*Q[x-y]%mod if 0<=y<=x else 0 t = 1 ans = 0 for i in range(m+1)[::-1]: ans += comb(m, i)*pow(i, n, mod)*t t = -t ans %= mod print(ans)