#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int n, m, ans, fac[1000005], inv[1000005], muln[1000005], mulm[1000005];
void FAC_INV(const int N) {
  fac[0] = fac[1] = inv[0] = inv[1] = muln[0] = mulm[0] = 1;
  muln[1] = n, mulm[1] = m;
  for (int i = 2; i <= N; i++)
    fac[i] = 1ll * fac[i - 1] * i % mod,
    inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod,
    muln[i] = 1ll * muln[i - 1] * n % mod,
    mulm[i] = 1ll * mulm[i - 1] * m % mod;
  for (int i = 2; i <= N; i++) inv[i] = 1ll * inv[i] * inv[i - 1] % mod;
}
int C(int n, int m) { return 1ll * fac[n] * inv[m] % mod * inv[n - m] % mod; }
int main() {
  scanf("%d%d%*d%*d", &n, &m);
  FAC_INV(max(n, m));
  for (int i = 1; i <= min(n - 1, m); i++)
    ans = (ans +
           1ll * C(m - 1, i - 1) * C(n - 2, i - 1) % mod * fac[i - 1] % mod *
               mulm[n - 1 - i] % mod *
               (n - i - 2 >= 0 ? 1ll * muln[n - i - 2] * (i + 1) % mod : 1)) %
          mod;
  printf("%d\n", ans);
}
