#include using namespace std; #define MOD 1000000007 #define N 100000 long long k; long long dp[N + 1][2]; long long solve(int n, bool x){ if (n == 0){ return !x; } if (dp[n][x] != -1){ return dp[n][x]; } if (x){ return dp[n][x] = ((k - 1) * solve(n - 1, false)) % MOD; } return dp[n][x] = ((k - 2) * solve(n - 1, false) + solve(n - 1, true)) % MOD; } int main(){ int n, x; memset(dp, -1, sizeof(dp)); scanf("%d%lld%d", &n, &k, &x); printf("%lld\n", solve(n - 2, x == 1)); return 0; }