#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int n, m, x;
vector<vector<int> > f, p;
void AddMod(int &a, int b) {
  a += b;
  if (a >= MOD) a -= MOD;
}
int main() {
  scanf("%d %d %d", &n, &m, &x);
  if (n > m)
    printf("0");
  else {
    f.resize(n + 2, vector<int>(n + 2, 0));
    p.resize(n + 2, vector<int>(n + 2, 0));
    f[0][0] = 1;
    for (int i = 1; i <= m; ++i) {
      swap(f, p);
      f.assign(n + 2, vector<int>(n + 2, 0));
      for (int j = 0; j <= min(i, n); ++j)
        for (int k = 0; j + k <= min(i, n); ++k) {
          AddMod(f[j + 1][k], p[j][k]);
          AddMod(f[j][k + 1], p[j][k]);
          if (i != x && j > 0) AddMod(f[j - 1][k + 1], p[j][k]);
          if (i != x) AddMod(f[j][k], p[j][k]);
        }
    }
    int res = f[0][n];
    for (int i = 2; i <= n; ++i) res = (long long)res * i % MOD;
    printf("%d", res);
  }
  return 0;
}
