// Latihan bergaya OSN, Bab 16, soal 2 -- pembahasan. // // Komplemen ganda: kurangi yang tanpa 'a' dan yang tanpa 'b', lalu // kembalikan yang tanpa keduanya karena terkurang dua kali. #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 semua = pangkat(k, n); long long tanpaSatu = pangkat(k - 1, n); long long tanpaKeduanya = pangkat(k - 2, n); long long hasil = ((semua - 2 * tanpaSatu % MOD) % MOD + tanpaKeduanya) % MOD; hasil = (hasil % MOD + MOD) % MOD; cout << hasil << "\n"; return 0; }