#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
const int N = 1007;
long long ans;
int n, k, p[N];
bool check() {
  bool used[9];
  for (int i = 2; i <= k; ++i) {
    memset(used, false, sizeof used);
    int u = i;
    bool f = false;
    do {
      used[u] = true;
      u = p[u];
      if (u == 1) {
        f = true;
        break;
      }
    } while (!used[u]);
    if (!f) return false;
  }
  return true;
}
void gen(int i) {
  if (i == k + 1) {
    if (check()) ++ans;
    return;
  }
  if (i == 1) {
    for (int j = 1; j <= k; ++j) {
      p[i] = j;
      gen(i + 1);
    }
  } else {
    for (int j = 1; j <= k; ++j) {
      if (i != j) {
        p[i] = j;
        gen(i + 1);
      }
    }
  }
}
int main() {
  cin >> n >> k;
  gen(1);
  for (int i = 0; i < n - k; ++i) ans = (ans * (n - k)) % 1000000007LL;
  cout << ans << endl;
  return 0;
}
