#include using namespace std; const int mod = 1e9 + 7; int N, K, X; int dp[100005][3]; int add(int x, int y) { x += y; if(x >= mod) x -= mod; return x; } int mul(int x, int y) { return (1LL * x * y) % mod; } int main() { cin >> N >> K >> X; if(X == 1) { dp[1][0] = 1; for(int i = 2; i <= N; i++) { dp[i][0] = dp[i - 1][1]; dp[i][1] = add(mul(K - 1, dp[i - 1][0]), mul(K - 2, dp[i - 1][1])); } cout << dp[N][0]; exit(0); } dp[1][0] = 1; for(int i = 2; i <= N; i++) { dp[i][0] = add(dp[i - 1][1], dp[i - 1][2]); dp[i][2] = add(dp[i - 1][0], dp[i - 1][1]); dp[i][1] = add( mul(K - 2, add(dp[i - 1][0], dp[i - 1][2])), mul(K - 3, dp[i - 1][1]) ); } cout << dp[N][2]; return 0; }