#include "bits/stdc++.h" #pragma warning(disable:4996) using namespace std; #define int long long #define rep(i,n) for(int i=0;i P; const long long mod = 1000000007; const long long inf = 1ll<<61; int kj[200006], kji[200006]; int modpow(int a, int x) { int res = 1; while (x) { if (x & 1)res = res*a%mod; a = a*a%mod; x >>= 1; } return res; } void setkj() { kj[0] = 1; rep(i, 200005) { kj[i + 1] = kj[i] * (i + 1) % mod; kji[i] = modpow(kj[i], mod - 2); } } int comb(int n, int r) { return kj[n] * kji[r] % mod*kji[n - r] % mod; } signed main() { int n, m; cin >> n >> m; int ans = 0; setkj(); for(int i=1;i<=m;i++) { if ((m - i) & 1)ans -= comb(m, i)*modpow(i, n) % mod; else ans += comb(m, i)*modpow(i, n) % mod; ans = (ans + mod) % mod; } cout << ans << endl; }