#include <bits/stdc++.h>
using namespace std;
int n, m, x, f[2][333][333];
const int mod = (int)1e9 + 7;
void Add(int &x, int y) {
  x += y;
  if (x >= mod) x -= mod;
}
int main() {
  scanf("%d%d%d", &n, &m, &x);
  if (n > m)
    return puts("0"), 0;
  else {
    f[0][0][0] = 1;
    for (int i = 1; i <= m; ++i) {
      int lim = min(i, n), now = i & 1, cur = now ^ 1;
      for (int l = 0; l <= lim; ++l) {
        for (int r = 0; r <= l; ++r) {
          f[now][l][r] = 0;
          if (i == x) {
            if (l) Add(f[now][l][r], f[cur][l - 1][r]);
            if (l && r) Add(f[now][l][r], f[cur][l - 1][r - 1]);
          } else {
            if (l) Add(f[now][l][r], f[cur][l - 1][r]);
            if (l && r) Add(f[now][l][r], f[cur][l - 1][r - 1]);
            if (r) Add(f[now][l][r], f[cur][l][r - 1]);
            Add(f[now][l][r], f[cur][l][r]);
          }
        }
      }
    }
    int z = m & 1, ans = f[z][n][n];
    for (int i = 1; i <= n; ++i) ans = 1ll * ans * i % mod;
    printf("%d\n", ans);
  }
  return 0;
}
