#include #include #include #include #include #include #include #include #include #include #define MAX 100010 #define MOD 1000000007 #define vt first #define idx second using namespace std; long long power(long long x, unsigned int y) { if (y == 0) return 1; long long p = power(x, y/2) % MOD; p = (p * p) % MOD; return (y%2 == 0)? p : (x * p) % MOD; } int main() { long long n, k, x; cin >> n >> k >> x; if(n == 3) { cout << k-2 << endl; return 0; } long long tmp=1; for (int i=3;i MOD) { tmp %= MOD; } } long long bonus; bonus = (n%2 == 0 ? tmp+1 : tmp-1) * power(k, MOD - 2); if(x == 1) { if (n%2 == 0) { bonus -= 1; } else { bonus += 1; } } long long ans = (k-2) * tmp + bonus; cout << ans % MOD << endl; return 0; }