#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10, SQ = 320, MOD = 1e9 + 7;
long long dp[2][SQ][SQ];
int n, m, x;
int main() {
  cin >> n >> m >> x;
  if (n > m) return cout << 0, 0;
  x--;
  if (x != 0) dp[0][0][0]++;
  dp[0][1][1]++;
  dp[0][1][0]++;
  for (int i = 1; i < m; i++)
    for (int j = 0; j <= min(n, i + 1); j++)
      for (int k = 0; k <= j; k++) {
        bool cur = i % 2;
        dp[cur][j][k] = 0;
        if (i != x) {
          dp[cur][j][k] += dp[!cur][j][k];
          dp[cur][j][k] += dp[!cur][j][k + 1];
        }
        if (j > 0 && k > 0) dp[cur][j][k] += dp[!cur][j - 1][k - 1];
        if (j > 0) dp[cur][j][k] += dp[!cur][j - 1][k];
        dp[cur][j][k] %= MOD;
      }
  long long ans = dp[(m - 1) % 2][n][0];
  for (int i = 1; i <= n; i++) ans *= i, ans %= MOD;
  cout << ans;
}
