#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int main() {
  int n, m, x;
  scanf("%d%d%d", &n, &m, &x);
  if (n > m) {
    printf("0\n");
    return 0;
  }
  int dp[m + 10][n + 10][n + 10];
  memset(dp, 0, sizeof dp);
  dp[0][0][0] = 1;
  for (int i = 1; i <= m; i++) {
    for (int l = 0; l <= n; l++) {
      for (int r = 0; r <= l; r++) {
        long long DP = 0;
        if (l > 0 && r > 0) DP += dp[i - 1][l - 1][r - 1];
        if (l > 0) DP += dp[i - 1][l - 1][r];
        if (r > 0 && i != x) DP += dp[i - 1][l][r - 1];
        if (i != x) DP += dp[i - 1][l][r];
        dp[i][l][r] = DP % mod;
      }
    }
  }
  int ans = dp[m][n][n];
  for (int i = 1; i <= n; i++) ans = 1ll * ans * i % mod;
  printf("%d\n", ans);
}
