#include <bits/stdc++.h>

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;
}