#include <bits/stdc++.h>
using namespace std;
long long t, xiaoyud, dayu, n, x, pos, ans1, mo = 1e9 + 7, ans2, ans;
int main() {
  cin >> n >> x >> pos;
  long long l = 0, r = n;
  while (l < r) {
    long long mid = (l + r) / 2;
    if (mid <= pos) {
      l = mid + 1;
      if (mid != pos) xiaoyud++;
    } else {
      r = mid;
      dayu++;
    }
  }
  ans1 = 1;
  for (long long i = 1; i <= xiaoyud; i++) {
    ans1 = (ans1 * (x - 1 - i + 1)) % mo;
  }
  ans2 = 1;
  for (long long i = 1; i <= dayu; i++) {
    ans2 = (ans2 * (n - x - i + 1)) % mo;
  }
  ans = (ans1 * ans2) % mo;
  for (long long i = 1; i <= n - xiaoyud - dayu - 1; i++) {
    ans = (ans * (n - xiaoyud - dayu - i)) % mo;
  }
  cout << ans;
}
