#include <bits/stdc++.h>
using namespace std;
template <class T>
void CIN(T &a) {
  cin >> a;
}
template <class T>
void CIN(T &a, T &b) {
  cin >> a >> b;
}
template <class T>
void CIN(T &a, T &b, T &c) {
  cin >> a >> b >> c;
}
template <class T>
void CIN(T &a, T &b, T &c, T &d) {
  cin >> a >> b >> c >> d;
}
template <class T>
void PI(T a) {
  cout << a << endl;
}
template <class T>
void PI(T a, T b) {
  cout << a << " " << b << endl;
}
template <class T>
void PIS(T a) {
  cout << a << " ";
}
template <class T>
T abs(T a) {
  return a < 0 ? -a : a;
}
const int MOD = 1000000007;
int n, m, x, dp[2][320][320];
int main() {
  CIN(n, m, x);
  if (n > m) {
    puts("0");
    return 0;
  }
  int i, j, k;
  int nw = 0, nx = 1;
  dp[0][0][0] = 1;
  for (i = 1; i <= (int)(m); ++i) {
    for (j = 0; j < (int)(n + 1); ++j)
      for (k = 0; k < (int)(j + 1); ++k) dp[nx][j][k] = 0;
    for (j = 0; j < (int)(n + 1); ++j)
      for (k = 0; k < (int)(j + 1); ++k) {
        if (i != x) dp[nx][j][k] = (dp[nx][j][k] + dp[nw][j][k]) % MOD;
        if (i != x) dp[nx][j][k + 1] = (dp[nx][j][k + 1] + dp[nw][j][k]) % MOD;
        dp[nx][j + 1][k] = (dp[nx][j + 1][k] + dp[nw][j][k]) % MOD;
        dp[nx][j + 1][k + 1] = (dp[nx][j + 1][k + 1] + dp[nw][j][k]) % MOD;
      }
    swap(nx, nw);
  }
  long long ans = dp[nw][n][n];
  for (i = 1; i <= (int)(n); ++i) ans = ans * i % MOD;
  PI(ans);
  return 0;
}
