#include <bits/stdc++.h>
using namespace std;
int a[9];
int b[9];
int k;
inline bool verify() {
  memset(b, 0, sizeof(b));
  for (int i = (1); i < (k + 1); i++)
    if (!b[i]) {
      int j = i;
      while (1) {
        b[j] = i;
        j = a[j];
        if (j == 1 || b[j]) break;
      }
      if (j != 1 && b[j] == i) return false;
    }
  return true;
}
int rec(int i) {
  if (i > k) {
    if (verify()) return 1;
    return 0;
  }
  int ret = 0;
  for (int j = (1); j < (k + 1); j++) {
    if (i == j && i != 1) continue;
    a[i] = j;
    ret += rec(i + 1);
  }
  return ret;
}
int main() {
  int n;
  cin >> n >> k;
  memset(a, 0, sizeof(a));
  long long prev = rec(1);
  for (int i = 0; i < (n - k); i++) prev = (prev * (n - k)) % 1000000007;
  cout << prev;
  return 0;
}
