#include <bits/stdc++.h>
using namespace std;
long long M = 1e9 + 7;
const int N = 1e5 + 7, R = 330;
int dp[2][R][R];
int main() {
  int n, m, x;
  cin >> n >> m >> x;
  if (n >= 317) {
    cout << 0;
    return 0;
  }
  dp[1][0][0] = 1;
  for (int i = 1; i <= m; i++) {
    int md = i % 2;
    int nmd = 1 - md;
    for (int j = 0; j <= n; j++)
      for (int k = j; k <= n; k++) dp[nmd][j][k] = 0;
    for (int j = 0; j <= n; j++)
      for (int k = j; k <= n; k++) {
        if (i != x) dp[nmd][j][k] = (dp[nmd][j][k] + dp[md][j][k]) % M;
        if (i != x && j)
          dp[nmd][j - 1][k] = (dp[nmd][j - 1][k] + dp[md][j][k]) % M;
        if (k < n)
          dp[nmd][j + 1][k + 1] = (dp[nmd][j + 1][k + 1] + dp[md][j][k]) % M;
        if (k < n) dp[nmd][j][k + 1] = (dp[nmd][j][k + 1] + dp[md][j][k]) % M;
      }
  }
  long long res = dp[(m + 1) % 2][0][n];
  for (int i = 1; i <= n; i++) res = (res * i) % M;
  cout << res;
}
