#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
const int MAXN = 21;
int n, k;
int a[MAXN];
namespace math {
inline long long pow(long long x, int k, const long long& p) {
  long long res = 1;
  for (int i = k; i > 0; i >>= 1) {
    if (i & 1) res = res * x % p;
    x = x * x % p;
  }
  return res;
}
}  // namespace math
inline bool check() {
  for (int i = 2; i <= k; ++i) {
    int cnt = 0, pos = i;
    while (pos != 1) {
      pos = a[pos];
      if (++cnt > k) return false;
    }
  }
  return true;
}
long long res;
inline void DFS(int x) {
  if (x == k + 1) {
    res += check();
    return;
  }
  for (int i = 1; i <= k; ++i) a[x] = i, DFS(x + 1);
}
int main() {
  scanf("%d %d\n", &n, &k);
  long long sum = math::pow(n - k, n - k, MOD);
  DFS(1);
  res = res * sum % MOD;
  printf("%I64d\n", res);
  fclose(stdin);
  fclose(stdout);
  return 0;
}
