#include <bits/stdc++.h>
using namespace std;
int n, m, X;
int dp[40000020];
void add(int &x, int y) {
  x += y;
  if (x >= 1000000007) x -= 1000000007;
}
int &f(int i, int x, int y) {
  int t = i * (n + 2) * (n + 2) + x * (n + 2) + y;
  return dp[t];
}
int main() {
  scanf("%d%d%d", &n, &m, &X);
  if (n > m) {
    puts("0");
    return 0;
  }
  dp[0] = 1;
  for (int i = 1; i <= m; ++i) {
    for (int x = 0; x <= i && x <= n; ++x) {
      for (int y = 0; y <= x; ++y) {
        if (i == X) {
          if (y > 0)
            add(f(i, x, y), f(i - 1, x - 1, y - 1));
          else
            f(i, x, y) = 0;
          if (x > 0) add(f(i, x, y), f(i - 1, x - 1, y));
        } else {
          add(f(i, x, y), f(i - 1, x, y + 1));
          if (y > 0) add(f(i, x, y), f(i - 1, x - 1, y - 1));
          add(f(i, x, y), f(i - 1, x, y));
          if (x > 0) add(f(i, x, y), f(i - 1, x - 1, y));
        }
      }
    }
  }
  int ans = f(m, n, 0);
  for (int i = 1; i <= n; ++i) ans = 1LL * ans * i % 1000000007;
  printf("%d\n", ans);
  return 0;
}
