#include <bits/stdc++.h>
using namespace std;
long long mod = 1e9 + 7;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, m, x;
  cin >> n >> m >> x;
  x--;
  if (n > m) {
    cout << 0 << endl;
    return 0;
  }
  vector<vector<long long>> dp(n + 1, vector<long long>(n + 1, 0));
  dp[0][0] = 1;
  for (int i = 0; i < m; i++) {
    vector<vector<long long>> ndp(n + 1, vector<long long>(n + 1, 0));
    for (int j = 0; j <= n; j++)
      for (int k = 0; j + k <= n; k++) {
        if (i != x) (ndp[j][k] += dp[j][k]) %= mod;
        if (j + k + 1 <= n) (ndp[j + 1][k] += dp[j][k]) %= mod;
        if (i != x && j) (ndp[j - 1][k + 1] += dp[j][k]) %= mod;
        if (j + k + 1 <= n) (ndp[j][k + 1] += dp[j][k]) %= mod;
      }
    swap(dp, ndp);
  }
  long long ans = dp[0][n];
  for (int i = 1; i <= n; i++) (ans *= i) %= mod;
  cout << ans << endl;
}
