#include <bits/stdc++.h>
using namespace std;
const long long maxx = 790;
const long long maxn = 1000000 + 7;
const long long mod = 1e9 + 7;
const long long maxs = 500000 + 7;
const long long maxm = 400000 + 7;
const long long maxk = 1008 + 7;
const long long maxw = 100 + 7;
const long long maxh = 100 + 7;
const double pi = 3.1415926;
const long long ten = 10;
const long long ooi = 1e9 + 7;
const long long ool = 1e18 + 7;
const long double eps = 1e-8;
const int apsz = 26;
long long n, m;
long long p[maxn];
long long cn[maxn];
long long cm[maxn];
long long qm[maxn];
long long inv[maxn];
long long f[maxn];
long long limit = 0;
long long qw(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) {
      ans *= a;
      ans %= mod;
    }
    b >>= 1;
    a *= a;
    a %= mod;
  }
  if (ans > mod) ans %= mod;
  return ans;
}
void init() {
  int a, b;
  cin >> n >> m >> a >> b;
  f[0] = 1;
  for (int i = (1); i <= (max(n, m)); i++) f[i] = f[i - 1] * i, f[i] %= mod;
  qm[0] = 1;
  for (int i = (1); i <= (max(n, m)); i++) qm[i] = qm[i - 1] * m, qm[i] %= mod;
  long long now = qw(f[max(n, m)], mod - 2);
  for (long long i = (max(n, m)); i >= (1); i--) {
    inv[i] = now * f[i - 1] % mod;
    now *= i;
    now %= mod;
  }
  cm[0] = cn[0] = 1;
  limit = min(n - 2, m - 1);
  for (int i = (0); i <= (m - 1); i++)
    cm[i + 1] = cm[i] * (m - 1 - i), cm[i + 1] %= mod, cm[i + 1] *= inv[i + 1],
           cm[i + 1] %= mod;
  for (int i = (0); i <= (n - 2); i++)
    cn[i + 1] = cn[i] * (n - 2 - i) % mod,
           cn[i + 1] = cn[i + 1] * inv[i + 1] % mod;
}
long long mycal(long long i) {
  long long yu1 = n - i - 2;
  yu1++;
  long long wgr = i + 2;
  long long ans;
  if (yu1 == 1)
    return ans = 1;
  else
    return ans = wgr * qw(n, yu1 - 2) % mod;
}
void solve() {
  long long ans = 0;
  for (int i = (0); i <= (n - 2); i++) {
    if (i > m - 1) break;
    long long tp = cn[i] * cm[i] % mod;
    tp *= f[i], tp %= mod;
    tp *= qm[n - i - 2];
    tp %= mod;
    tp *= mycal(i);
    tp %= mod;
    ans += tp;
    ans %= mod;
  }
  cout << ans << endl;
}
int main(void) {
  ios::sync_with_stdio(false);
  cout.tie(0);
  cin.tie(0);
  init();
  solve();
  return 0;
}
