#include <bits/stdc++.h>
using ll = long long;
const int C = 331, M = 1000000007;
int dp[C][C];
ll fac[C];
int main() {
  int n, m, x, i, a, b;
  fac[0] = 1;
  for (i = 1; i < C; i++) fac[i] = (fac[i - 1] * i) % M;
  scanf("%d %d %d", &n, &m, &x);
  dp[0][0] = 1;
  if (n > m) {
    printf("0\n");
    return 0;
  }
  for (i = 1; i <= m; i++) {
    for (b = n; b >= 0; b--) {
      for (a = n; a >= 0; a--) {
        if (a > 0 && i != x)
          dp[a - 1][b + 1] = (dp[a - 1][b + 1] + dp[a][b]) % M;
        dp[a][b + 1] = (dp[a][b + 1] + dp[a][b]) % M;
        dp[a + 1][b] = (dp[a + 1][b] + dp[a][b]) % M;
        if (i == x) dp[a][b] = 0;
      }
    }
  }
  printf("%lld\n", (fac[n] * dp[0][n]) % M);
  return 0;
}
