#include using namespace std; typedef long long ll; const int mod = 1000000007; const int maxN = 100005; ll N, K, X, dp[maxN][2]; ll dfs(int n, int p){ if(n==2){ if(p){ if(X==1) return 0; return 1; } if(X==1) return K-1; return K-2; } if(dp[n][p]!=0) return dp[n][p]-1; ll ans = 0; if(p){ ans = dfs(n-1, 0); }else{ ans = ((K-1)*dfs(n-1, 1))%mod; ans = (ans+(((K-2)*dfs(n-1, 0))%mod))%mod; } dp[n][p] = ans+1; return ans; } int main() { cin >> N >> K >> X; cout << dfs(N-1, 0); return 0; }