#include <bits/stdc++.h>
void Get(int &T) {
  char C;
  bool F = 0;
  for (; C = getchar(), C < '0' || C > '9';)
    if (C == '-') F = 1;
  for (T = C - '0'; C = getchar(), C >= '0' && C <= '9'; T = T * 10 + C - '0')
    ;
  F && (T = -T);
}
int N, M;
void Init() {
  Get(N);
  Get(M);
}
long long F[1000005];
long long Inv[1000005];
long long InvF[1000005];
long long Ans = 0;
long long Pow(long long X, long long Y) {
  long long Ans = 1;
  for (; Y; Y >>= 1) {
    if (Y & 1) (Ans *= X) %= (1000000007);
    (X *= X) %= (1000000007);
  }
  return Ans;
}
void Work() {
  Inv[1] = 1;
  for (int i = 2; i <= N; i++) {
    Inv[i] = (1000000007) -
             (Inv[(1000000007) % i] * ((1000000007) / i)) % (1000000007);
  }
  InvF[0] = F[0] = 1;
  for (int i = 1; i <= N; i++) {
    F[i] = (F[i - 1] * i) % (1000000007);
    InvF[i] = (InvF[i - 1] * Inv[i]) % (1000000007);
  }
  for (int i = 1; i <= N; i++) {
    long long Ans0;
    if (M - i - 1 >= 0) {
      (Ans0 = F[N] * InvF[N - i]) %= (1000000007);
      (Ans0 *= F[N]) %= (1000000007);
      (Ans0 *= InvF[N - i]) %= (1000000007);
      (Ans0 *= i) %= (1000000007);
      (Ans0 *= Pow(N, M - i - 1)) %= (1000000007);
      (Ans += Ans0) %= (1000000007);
    } else {
      (Ans0 = F[N] * InvF[N - i]) %= (1000000007);
      (Ans0 *= F[N - i + M - 1]) %= (1000000007);
      (Ans0 *= InvF[N - i]) %= (1000000007);
      (Ans0 *= M) %= (1000000007);
      (Ans += Ans0) %= (1000000007);
    }
    if (N - i - 1 >= 0) {
      if (M - i - 2 >= 0) {
        (Ans0 = F[N] * InvF[N - i]) %= (1000000007);
        (Ans0 *= F[N]) %= (1000000007);
        (Ans0 *= InvF[N - i - 1]) %= (1000000007);
        (Ans0 *= i) %= (1000000007);
        (Ans0 *= Pow(N, M - i - 2)) %= (1000000007);
        (Ans += Ans0) %= (1000000007);
      } else {
        (Ans0 = F[N] * InvF[N - i]) %= (1000000007);
        (Ans0 *= F[N - i + M - 2]) %= (1000000007);
        (Ans0 *= InvF[N - i - 1]) %= (1000000007);
        (Ans0 *= (M - 1)) %= (1000000007);
        (Ans += Ans0) %= (1000000007);
      }
    }
  }
  printf("%I64d\n", Ans);
}
int main() {
  Init();
  Work();
}
