#include <bits/stdc++.h>
using namespace std;
long long BigMod(long long a, long long b, long long mod) {
  if (!b) return 1;
  long long x = BigMod(a, b / 2, mod);
  x = (x * x) % mod;
  if (b & 1) x = (x * a) % mod;
  return x;
}
long long G(int x) { return BigMod(x, x, 1000000007); }
int par[10] = {0};
int FIND(int a) {
  if (par[a] != a) par[a] = FIND(par[a]);
  return par[a];
}
long long F(int k) { return BigMod(k, k - 1, 1000000007); }
int main() {
  int n, k;
  scanf("%d", &n);
  scanf("%d", &k);
  long long ans = (F(k) * G(n - k)) % 1000000007;
  printf("%I64d\n", ans);
  return 0;
}
