#include #include using mint = atcoder::modint1000000007; using namespace std; int main() { int n, m; cin >> n >> m; vector fact = {1}; for (int i = 1; i < 1010101; i++){ fact.push_back(fact.back() * mint(i)); } auto cmb = [&](int n,int r){ return fact[n] / fact[n - r] / fact[r]; }; mint ans = 0; for (int i = 0; i <= m; i++){ ans += mint(-1).pow(m - i) * cmb(m, i) * mint(i).pow(n); } cout << ans.val() << endl; }