#include <bits/stdc++.h>
using namespace std;
const int N = 1000006;
const long long mod = 1e9 + 7;
long long fexp(long long b, long long e) {
  long long ans = 1;
  b %= mod;
  while (e) {
    if (e & 1) ans = ans * b % mod;
    b = b * b % mod;
    e /= 2;
  }
  return ans;
}
long long fat[N], ifat[N];
long long C(int n, int k) { return fat[n] * ifat[n - k] % mod * ifat[k] % mod; }
int n, m;
int main() {
  fat[0] = 1;
  for (int i = 1; i < N; i++) fat[i] = i * fat[i - 1] % mod;
  for (int i = 0; i < N; i++) ifat[i] = fexp(fat[i], mod - 2);
  scanf("%d %d %*d %*d", &n, &m);
  if (n == 2) return printf("1\n"), 0;
  long long ans = 0;
  for (int mid = 0; mid <= n - 2 and mid + 1 <= m; mid++) {
    long long tmp = C(n - 2, mid) * fat[mid] % mod;
    tmp = tmp * C(m - 1, mid) % mod;
    if (n - 2 == mid) {
    } else {
      tmp = tmp * fexp(n, n - 2 - mid - 1) % mod;
      tmp = tmp * (mid + 2) % mod;
      tmp = tmp * fexp(m, n - 2 - mid) % mod;
    }
    ans += tmp;
    if (ans >= mod) ans -= mod;
  }
  printf("%lld\n", ans);
}
