#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::system_clock::now().time_since_epoch().count());
mt19937_64 rngll(rng());
const int mn = 1e6 + 10;
const long long mod = 1e9 + 7;
long long fact[mn];
long long po(long long a, long long b = mod - 2) {
  if (b < 0) b += mod - 1;
  long long ans = 1;
  for (; b; b >>= 1, a *= a, a %= mod)
    if (b & 1) ans *= a, ans %= mod;
  return ans;
}
long long ch(long long n, long long k) {
  if (k < 0 || k > n) return 0;
  return fact[n] * po(fact[k] * fact[n - k] % mod) % mod;
}
int main() {
  int n, m, a, b;
  scanf("%d%d%d%d", &n, &m, &a, &b);
  fact[0] = 1;
  for (int i = 1; i < mn; i++) fact[i] = fact[i - 1] * i % mod;
  long long ans = 0;
  for (int i = 1; i <= n - 1; i++) {
    long long num = ch(m - 1, i - 1);
    num *= ch(n - 2, i - 1) * fact[i - 1] % mod, num %= mod;
    num *= po(m, n - i - 1), num %= mod;
    num *= (i + 1) * po(n, n - 1 - i - 1) % mod, num %= mod;
    ans += num, ans %= mod;
  }
  printf("%lld", ans);
}
