#include using namespace std; const int N = 100010; const long long mod = 1e9 + 7; long long f[N][4]; long long countArray(int n, int k, int x) { int maskOne = 1, maskX = 2; if(x == 1) maskOne = maskX = 3; f[1][maskOne] = 1; for(int i = 2; i <= n; ++i){ f[i][0] = (f[i - 1][maskOne] + (x != 1 ? f[i - 1][maskX] : 0)) * max(0, (k - 2 + (x == 1))) + f[i - 1][0] * max(0, k - 3 + (x == 1)); f[i][maskOne] = (x != 1 ? f[i - 1][maskX] : 0) + f[i - 1][0]; if(x != 1) f[i][maskX] = (f[i - 1][maskOne] + f[i - 1][0]); f[i][0] %= mod; f[i][1] %= mod; f[i][2] %= mod; f[i][3] %= mod; } return f[n][maskX]; } int main() { int n; int k; int x; cin >> n >> k >> x; long long answer = countArray(n, k, x); cout << answer << endl; return 0; }