#include #define DEBUG using ll = long long; ll constexpr INF = 1e18; ll constexpr MOD = 1e9 + 7; inline ll mulmod(ll a, ll b) { return ((a % MOD) * (b % MOD)) % MOD; } ll expmod(ll a, ll b) { ll res = 1; while (b) { if (b & 1) { res = mulmod(res, a); } b >>= 1; a = mulmod(a, a); } return res; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int n, k, x; std::cin >> n >> k >> x; if (n == 3) { if (x == 1) { std::cout << 2 << '\n'; } else { std::cout << 1 << '\n'; } return 0; } if (n == 4) { if (x == 1) { std::cout << 2 << '\n'; } else { std::cout << 3 << '\n'; } return 0; } ll res = expmod(k - 1, n - 3); std::cout << res + 2 * k - 3 << '\n'; }