#include using namespace std; typedef long long ll; ll mod = 1000000007; ll dp[100001],dp1[100001]; int main() { ll n; ll k; ll x; cin >> n >> k >> x; dp[1] = dp1[1] = 0; if(x == 1){ dp[2] = 0; dp1[2] = k - 1; dp[3] = k - 1; dp1[3] = (dp[2]*(k-1) + dp1[2]*(k-2))%mod; }else{ dp[2] = 1; dp1[2] = k - 2; dp[3] = k - 2; dp1[3] = (dp[2]*(k-1) + dp1[2]*(k-2))%mod; } for(int i = 4;i <= n;i++){ if(x != 1){ dp[i] = (dp[i-2]*(k-1) + dp1[i-2]*(k-2))%mod; dp1[i] = (dp[i-1]*(k-1) + dp1[i-1]*(k-2))%mod; }else{ dp[i] = (dp[i-2]*(k-1) + dp1[i-2]*(k-2))%mod; dp1[i] = (dp[i-1]*(k-1) + dp1[i-1]*(k-2))%mod; } } cout << dp[n]; return 0; }