#include <bits/stdc++.h>
using namespace std;
const int mo = 1000000007;
const int N = 1000005;
int k, n, ans;
int fac[N], inv[N];
int power(int x, int y) {
  int s = 1;
  if (y < 0) y += mo - 1;
  for (; y; y /= 2, x = 1ll * x * x % mo)
    if (y & 1) s = 1ll * s * x % mo;
  return s;
}
int F(int l1, int l2) {
  if (l1 > k) return 0;
  if (l1 + l2 <= n + l2) {
    int ans = power(k, n - l1 - 1);
    ans = 1ll * ans * fac[k] % mo * inv[k - l2] % mo * l2 % mo;
    ans = 1ll * ans * fac[k] % mo * inv[k - l1] % mo;
    return ans;
  } else {
    int ans = 1;
    ans = 1ll * ans * fac[k] % mo * inv[k - l1] % mo;
    ans = 1ll * ans * (n + l2 - l1) % mo * fac[k - l1 + n - 1] % mo *
          inv[k - l2] % mo;
    return ans;
  }
}
int main() {
  scanf("%d%d", &k, &n);
  fac[0] = inv[0] = inv[1] = 1;
  for (int i = (int)(2); i <= (int)(N - 1); i++)
    inv[i] = 1ll * inv[mo % i] * (mo - mo / i) % mo;
  for (int i = (int)(1); i <= (int)(N - 1); i++)
    inv[i] = 1ll * inv[i - 1] * inv[i] % mo;
  for (int i = (int)(1); i <= (int)(N - 1); i++)
    fac[i] = 1ll * fac[i - 1] * i % mo;
  for (int ex = (int)(1); ex <= (int)(k); ex++)
    ans = (1ll * ans + F(ex, ex) + F(ex + 1, ex)) % mo;
  printf("%d\n", ans);
}
