#include <bits/stdc++.h>
using namespace std;
long long multiply(long long a, long long b, long long mod) {
  return ((a % mod) * (b % mod)) % mod;
}
long long fact(long long n) {
  if (n == 0) return 1;
  return multiply(n, fact(n - 1), 1000000007);
}
long long npr(long long n, long long r) { return fact(n) / (fact(n - r)); }
int main() {
  long long n, x, pos;
  cin >> n >> x >> pos;
  long long les = x - 1;
  long long more = n - x;
  long long l = 0;
  long long r = n;
  long long mid;
  long long ans = 1;
  int ans2 = 1;
  while (l < r) {
    mid = (l + r) / 2;
    if (mid < pos) {
      ans = (ans * (les) % 1000000007) % 1000000007;
      l = mid + 1;
      les--;
    } else if (mid > pos) {
      ans = (ans * (more) % 1000000007) % 1000000007;
      r = mid;
      more--;
    } else {
      l = mid + 1;
    }
  }
  ans = (ans * fact((more + les)) % 1000000007) % 1000000007;
  cout << ans;
}
