#include <bits/stdc++.h>
using namespace std;
template <class T>
void checkmin(T &t, T x) {
  if (x < t) t = x;
}
template <class T>
void checkmax(T &t, T x) {
  if (x > t) t = x;
}
template <class T>
void _checkmin(T &t, T x) {
  if (t == -1) t = x;
  if (x < t) t = x;
}
template <class T>
void _checkmax(T &t, T x) {
  if (t == -1) t = x;
  if (x > t) t = x;
}
long long n, k;
long long solve(long long a, long long b) {
  if (b == 0) return 1;
  if (b == 1) return a % 1000000007;
  long long t = 1;
  if (b % 2 == 1) t = a;
  long long tt = solve(a, b / 2);
  return (((tt * tt) % 1000000007) * t) % 1000000007;
}
int main() {
  cin >> n >> k;
  long long ans = solve(n - k, n - k);
  ans *= solve(k, k - 1);
  cout << ans % 1000000007 << endl;
  return 0;
}
