#include #include using namespace std; #define MAXN 100100 #define MOD 1000000007 long long dp[MAXN][2]; long long rec(int n, int state, int k) { if(dp[n][state] >= 0) { return dp[n][state]; } if(n == 2) { return dp[n][state] = state == 0; } long long ret = 0; if(state == 1) { ret += (k-1) * rec(n-1, !state, k); } else { ret += rec(n-1, !state, k); ret += (k-2) * rec(n-1, state, k); } //cout << n << " " << state << ret << endl; return dp[n][state] = ret%MOD; } long long countArray(int n, int k, int x) { return rec(n, 1 == x, k); } int main() { memset(dp, -1, sizeof(dp)); int n; int k; int x; cin >> n >> k >> x; long long answer = countArray(n, k, x); cout << answer << endl; return 0; }