#include using namespace std; long dp[100005][2]; long MOD = 1e9 + 7; long countArray(int n, int k, int x) { // Return the number of ways to fill in the array. if (x==1 && dp[n][1] > 0) return dp[n][1]; if (x!=1 && dp[n][0] > 0) return dp[n][0]; long ans = 0; if (n == 3) { if (x == 1) { ans = k - 1; dp[n][1] = ans; } else { ans = k-2; dp[n][0] = ans; } return ans; } long ans1 = countArray(n-1, k, 2); long ans2 = countArray(n-1, k, 1); if (x==1) { ans = (ans1*(k-1))%MOD; dp[n][1] = ans; } else { ans = ans2; ans = (ans + ans1*(k-2))%MOD; dp[n][0] = ans; } return ans; } int main() { int n; int k; int x; cin >> n >> k >> x; for(int i = 0;i