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