using System; using System.Linq; using System.Numerics; namespace Sample { class Program { static void Main(string[] args) { var arr = Console.ReadLine().Split(' ').Select(long.Parse).ToArray(); var (N, M) = (arr[0], arr[1]); var MOD = (long)Math.Pow(10, 9) + 7; long ans; if (N == M) { ans = nPk(N, M - 1, MOD); } else { ans = (long)(nPk(N, M, MOD) * BigInteger.ModPow((N - M), M, MOD) % MOD); } Console.WriteLine(ans); } /// /// 順列 (n >= k) /// public static long nPk(long n, long k, long mod) { if (n < k) return 0; if (n == k) return 1; long x = 1; for (long i = 0; i < k; i++) { x = x * (n - i) % mod; } return x; } } }