#include <bits/stdc++.h>
using namespace std;
long long n, k, cnt;
int A[10];
long long FE(long long n, long long m) {
  if (!m) return 1;
  long long t = FE(n, m >> 1);
  t = (t * t) % (1000000007);
  if (m & 1) t = (t * n) % (1000000007);
  return t % (1000000007);
}
bool ctrl() {
  bool H[10] = {0};
  int s = k - 1;
  if (!s) return true;
  for (int i = 2; i <= k; i++) {
    if (A[i] == 1) {
      H[i] = 1;
      s--;
      if (!s) return true;
    }
  }
  bool flag;
  while (1) {
    flag = 0;
    for (int i = 2; i <= k; i++) {
      if (!H[i] && H[A[i]]) {
        H[i] = 1;
        s--;
        flag = 1;
        if (!s) return true;
      }
    }
    if (!flag) return false;
  }
}
void solve(int x) {
  if (x == k + 1) {
    if (ctrl()) {
      cnt++;
      cnt %= (1000000007);
    }
    return;
  }
  for (int i = 1; i <= k; i++) {
    A[x] = i;
    solve(x + 1);
  }
}
int main() {
  scanf("%lld %lld", &n, &k);
  solve(2);
  long long res = 1;
  if (n - k > 0) res *= FE(n - k, n - k);
  cout << ((cnt * k) % (1000000007) * res) % (1000000007) << endl;
  return 0;
}
