#include <bits/stdc++.h>
using namespace std;
long long m, n, d, dp[2][369][369], dv = 1e9 + 7;
int main() {
  long long i, j, r, ii, iii, z;
  scanf("%lld%lld%lld", &n, &m, &d);
  if (n > m) {
    printf("0\n");
    return 0;
  }
  dp[0][0][0] = 1;
  for (i = 1; i <= m; i++) {
    for (j = 0; j <= n; j++) {
      for (r = 0; r <= j; r++) {
        for (ii = 0; ii < 2; ii++) {
          for (iii = 0; iii < 2; iii++) {
            if (j >= ii && r >= iii && (ii || i != d)) {
              dp[1][j][r] = (dp[1][j][r] + dp[0][j - ii][r - iii]) % dv;
            }
          }
        }
      }
    }
    for (j = 0; j <= n; j++) {
      for (r = 0; r <= j; r++) {
        dp[0][j][r] = dp[1][j][r];
        dp[1][j][r] = 0;
      }
    }
  }
  z = dp[0][n][n];
  for (i = 1; i <= n; i++) {
    z = z * i % dv;
  }
  printf("%lld\n", z);
}
