#include using namespace std; typedef long long int Long; const int MAXN = 1e5 + 3; const Long MOD = 1e9 + 7; int n, k, x; Long dp[MAXN][2]; Long solve(int i, int xLast) { if(i == n) return !xLast; if(dp[i][xLast] >= 0) return dp[i][xLast]; Long &ans = dp[i][xLast]; ans = ((k - 2 + xLast) * solve(i + 1, 0)) % MOD; if(!xLast) { ans += solve(i + 1, 1); ans %= MOD; } // printf(">> (%d, %d) %lld\n", i, xLast, ans); return ans; } Long countArray(int n, int k, int x) { memset(dp, -1, sizeof(dp)); return solve(2, x == 1) % MOD; } int main() { cin >> n >> k >> x; cout << countArray(n, k, x) << endl; return 0; }