#include <bits/stdc++.h>
using namespace std;
const int M = 1e9 + 7;
int dp[2][320][320], n, m, x;
void add(int &a, int b) {
  a += b;
  if (a >= M) a -= M;
}
int main() {
  scanf("%d%d%d", &n, &m, &x);
  if (n > m) return puts("0"), 0;
  dp[0][0][0] = 1;
  x--;
  for (int i = 0; i < m; i++) {
    for (int j = 0; j <= n; j++)
      for (int k = j; k <= n; k++) {
        int v = dp[0][j][k];
        if (i != x) {
          if (!j) add(dp[1][j][k + 1], v);
          if (j) add(dp[1][j - 1][k], v), add(dp[1][j][k + 1], v);
          add(dp[1][j + 1][k + 1], v);
          add(dp[1][j][k], v);
        } else {
          add(dp[1][j + 1][k + 1], v);
          if (j) add(dp[1][j][k + 1], v);
          if (!j) add(dp[1][j][k + 1], v);
        }
      }
    for (int j = 0; j <= n; j++)
      for (int k = j; k <= n; k++) {
        dp[0][j][k] = dp[1][j][k];
        dp[1][j][k] = 0;
      }
  }
  int ans = dp[0][0][n];
  for (int i = 1; i <= n; i++) ans = (ans * 1LL * i) % M;
  printf("%d\n", ans);
}
