#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]; }; vector f(n + 1); for (int i = 1; i <= m; i++){ f[i] = cmb(m, i) * (mint(i)).pow(n) - f[i - 1]; } cout << f[m].val() << endl; }