#include using namespace std; const long MOD = 1e9+7; const int MAXN = 1e5+10; long dp[MAXN][2]; long countArray(int n, int k, int x) { // Return the number of ways to fill in the array. dp[1][0]=(x==1)?(k-1):(k-2); dp[1][1]=(x==1)?(0):(1); for(int i=2;i<=n;++i) { dp[i][0]=(dp[i-1][0]*(k-2)%MOD+dp[i-1][1]*(k-1))%MOD; dp[i][1]=dp[i-1][0]; } return dp[n-2][0]; } int main() { int n; int k; int x; cin >> n >> k >> x; long answer = countArray(n, k, x); cout << answer << endl; return 0; }