#include using namespace std; const int MAXN = 1e5 + 1; const long long MOD = 1e9 + 7; long long dp[MAXN][2]; long long countArray(int n, int k, int x) { dp[1][0] = 1; for (int i = 2; i <= n; i++) { dp[i][0] = (dp[i - 1][1] * (k - 1)) % MOD; dp[i][1] = (dp[i - 1][1] * (k - 2) + dp[i - 1][0]) % MOD; } if (x == 1) return dp[n][0]; else return dp[n][1]; } int main() { int n; int k; int x; cin >> n >> k >> x; long long answer = countArray(n, k, x); cout << answer << endl; return 0; }