#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
int n, m, x;
vector<vector<vector<int> > > d;
void add(int &x, int y) {
  x += y;
  while (x >= MOD) x -= MOD;
}
int main() {
  scanf("%d%d%d", &n, &m, &x);
  --x;
  if (n > m) {
    cout << "0\n";
    return 0;
  }
  d.assign(m + 1, vector<vector<int> >(n + 1, vector<int>(n + 1, 0)));
  d[0][0][0] = 1;
  for (int i = 0; i < m; ++i)
    for (int j = 0; j <= n; ++j)
      for (int k = 0; k <= j; ++k) {
        int oldd = d[i][j][k];
        if (!oldd) continue;
        if (i != x) {
          add(d[i + 1][j][k], oldd);
          if (j > k) add(d[i + 1][j][k + 1], oldd);
        }
        if (j + 1 <= n) {
          add(d[i + 1][j + 1][k], oldd);
          add(d[i + 1][j + 1][k + 1], oldd);
        }
      }
  long long ans = d[m][n][n];
  for (int i = 1; i <= n; ++i) ans = (ans * i) % MOD;
  cout << ans << "\n";
  return 0;
}
