#include #include using namespace std; const int N = 5005, mod = 1e9 + 7; int f[N][N]; int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) f[i][1] = m; for (int i = 2; i <= n; i++) for (int j = 2; j <= m; j++) { f[i][j] = (1ll * f[i - 1][j - 1] * (m - j + 1) + f[i][j]) % mod; f[i][j] = (1ll * f[i - 1][j] * j + f[i][j]) % mod; } cout << f[n][m] % mod; return 0; }