func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, k, cnt;   int A[10];   long long FE(long long n, long long m) {     if (!m) return 1;     long long t = FE(n, m >> 1);     t = (t * t) % (1000000007);     if (m & 1) t = (t * n) % (1000000007);     return t % (1000000007);   }   bool ctrl() {     bool H[10] = {0};     int s = k - 1;     if (!s) return true;     for (int i = 2; i <= k; i++) {       if (A[i] == 1) {         H[i] = 1;         s--;         if (!s) return true;       }     }     bool flag;     while (1) {       flag = 0;       for (int i = 2; i <= k; i++) {         if (!H[i] && H[A[i]]) {           H[i] = 1;           s--;           flag = 1;           if (!s) return true;         }       }       if (!flag) return false;     }   }   void solve(int x) {     if (x == k + 1) {       if (ctrl()) {         cnt++;         cnt %= (1000000007);       }       return;     }     for (int i = 1; i <= k; i++) {       A[x] = i;       solve(x + 1);     }   }   int main() {     scanf( %lld %lld , &n, &k);     solve(2);     long long res = 1;     if (n - k > 0) res *= FE(n - k, n - k);     cout << ((cnt * k) % (1000000007) * res) % (1000000007) << endl;     return 0;   }   