#include using namespace std; using ll = long long; ll mod = 1e9+7; ll nPk(ll n, ll k){ ll ans = 1; for (ll i = 0; i < k; ++i){ ans = (ans * (n - i)) % mod; } return ans; } ll solve(ll N, ll K){ ll ans, tmp1, tmp2; if (N == 1) return 0; if (K == 1){ ans = (nPk(N, K) + mod - 1) % mod; tmp1 = (N * (N + 1) / 2) % mod; return (ans * tmp1) % mod; } ans = nPk(N - 2LL, K - 2LL); tmp1 = (N - K) * (N - 1LL) % mod; tmp1 *= ((N + 1LL) * N / 2) % mod; tmp1 %= mod; tmp2 = (K * (K - 1) / 2) % mod; tmp2 *= ((N - 1) * N / 2) % mod; tmp2 %= mod; ans *= (tmp1 + tmp2) % mod; ans %= mod; return ans; } int main() { ios::sync_with_stdio(false); cin.tie(0); ll N, K; cin >> N >> K; cout << solve(N, K) << endl; return 0; }