#include <bits/stdc++.h>
using namespace std;
int n, m, x;
int dp[340][100001];
int rec(int i, int j, int k) {
  if (j > n + 1) return 0;
  if (i > m) return (j == (n + 1) && k == 1);
  if (dp[k][(j - 1) * m + i] != -1) return dp[k][(j - 1) * m + i];
  int an = 0;
  if (k == 1) an = (an + rec(i + 1, j + 1, k)) % 1000000007;
  if (k > 1) {
    if (x != i) an = (an + rec(i + 1, j, k - 1)) % 1000000007;
    an = (an + rec(i + 1, j + 1, k)) % 1000000007;
  }
  an = (an + rec(i + 1, j + 1, k + 1)) % 1000000007;
  if (x != i) an = (an + rec(i + 1, j, k)) % 1000000007;
  return dp[k][(j - 1) * m + i] = an;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> x;
  if (n > m) return cout << 0 << '\n', 0;
  memset(dp, -1, sizeof dp);
  int ans = rec(1, 1, 1);
  for (int i = 1; i <= n; i++) ans = (ans * 1ll * i) % 1000000007;
  cout << ans << '\n';
  return 0;
}
