#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<double, double> pdd;

template<class T>
using minheap = priority_queue<T, vector<T>, greater<T>>;

#define allof(x) x.begin(), x.end()

const int MAXN = 1e5 + 5;
const ll mod = 1e9 + 7;

ll N, K, X;

//[is x][idx]
ll dp[2][MAXN];

int main(){
    cin.tie(0);
    cin.sync_with_stdio(0);

    cin >> N >> K >> X;

    dp[X == 1][0] = 1;
    for(int a = 1; a < N; a++){
        dp[0][a] = (dp[1][a - 1] * (K - 1) + dp[0][a - 1] * (K - 2)) % mod;
        dp[1][a] = dp[0][a - 1];
        // cout << dp[0][a] << ", " << dp[1][a] << "\n";
    }
    cout << dp[1][N - 1] << "\n";
}