#include <bits/stdc++.h>
using namespace std;
int mod = 1000000007;
int a[10];
int n, k;
int was[10];
int dfs(int v) {
  if (v == 0) return 1;
  if (was[v] == 2) return 1;
  if (was[v] == 1) return 0;
  was[v] = 1;
  int res = dfs(a[v] - 1);
  was[v] = 2;
  return res;
}
int go(int p) {
  if (p == k) {
    int res = 1;
    for (int i = (0); i < (k); ++i) was[i] = 0;
    for (int i = (0); i < (k); ++i) {
      if (was[i]) continue;
      int k = dfs(i);
      if (!k) {
        res = 0;
        break;
      }
    }
    return res;
  }
  int st = 1, en = k;
  int res = 0;
  for (int i = (st); i < (en + 1); ++i) {
    a[p] = i;
    res += go(p + 1);
  }
  return res;
}
int main() {
  scanf("%d%d", &n, &k);
  long long res = go(0);
  for (int i = (0); i < (n - k); ++i) {
    res *= (n - k);
    res %= mod;
  }
  cout << res << endl;
  return 0;
}
