#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const int nax = 1010;
long long power(long long x, long long y) {
  long long ans = 1;
  while (y) {
    if (y % 2) ans = (ans * x) % mod;
    x = (x * x) % mod;
    y /= 2;
  }
  return ans;
}
int n, k;
long long temp = 0;
int curr = 0;
vector<int> v[10];
void dfs(int id) {
  curr++;
  for (auto i : v[id])
    if (i != 0) dfs(i);
}
void g() {
  curr = 0;
  dfs(0);
  if (curr == k) temp++;
}
void f(int id) {
  if (id == k) {
    g();
  } else {
    for (int i = 0; i < k; ++i) {
      v[i].emplace_back(id);
      f(id + 1);
      v[i].pop_back();
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n >> k;
  long long ans = power(n - k, n - k);
  if (k > 1) {
    f(0);
    cout << (ans * temp) % mod << '\n';
    ;
  } else
    cout << ans << '\n';
  ;
  return 0;
}
