#include <bits/stdc++.h>
using namespace std;
int dp[2][405][405], n, m, x;
inline void add(int &a, int b) {
  a = (a + b >= 1000000007 ? a + b - 1000000007 : a + b);
}
int main() {
  int i, j, k;
  dp[0][0][0] = 1;
  scanf("%d%d%d", &m, &n, &x);
  if (m > n) {
    puts("0");
    return 0;
  }
  for (i = 1; i <= n; i++) {
    int co = (i & 1), ls = (co ^ 1);
    for (j = 0; j <= m && j <= i; j++) {
      for (k = 0; k <= j; k++) {
        dp[co][j][k] = 0;
        if (i ^ x) add(dp[co][j][k], dp[ls][j][k]);
        if (j) add(dp[co][j][k], dp[ls][j - 1][k]);
        if (k && (i ^ x)) add(dp[co][j][k], dp[ls][j][k - 1]);
        if (j && k) add(dp[co][j][k], dp[ls][j - 1][k - 1]);
      }
    }
  }
  int ans = dp[n & 1][m][m];
  for (i = 1; i <= m; i++) ans = 1ll * ans * i % 1000000007;
  printf("%d\n", ans);
  return 0;
}
