#include using namespace std; typedef long long ll; typedef pair pii; typedef pair pll; typedef pair pdd; template using minheap = priority_queue, greater>; #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"; }