// Latihan bergaya OSN, Bab 16, soal 1 -- pembahasan. // // Aturan perkalian: jalur pertama K pilihan, setiap jalur berikutnya // K-1 pilihan karena tidak boleh sama dengan tetangga kirinya. #include using namespace std; const long long MOD = 1000000007LL; long long pangkat(long long alas, long long eksponen) { long long hasil = 1; alas %= MOD; while (eksponen > 0) { if (eksponen % 2 == 1) hasil = hasil * alas % MOD; alas = alas * alas % MOD; eksponen /= 2; } return hasil; } int main() { long long n, k; cin >> n >> k; long long hasil = k % MOD * pangkat(k - 1, n - 1) % MOD; cout << hasil << "\n"; return 0; }