#include <bits/stdc++.h>
using namespace std;
int n, x, pos;
int p, q;
int a[200000];
void bin(int *a, int x) {
  int left = 0, right = n;
  while (left < right) {
    int mid = (left + right) / 2;
    if (mid <= pos) {
      left = mid + 1;
      q++;
    } else if (mid > pos) {
      right = mid;
      p++;
    }
  }
}
long long ans = 1;
long long mod = 1000000007;
long long A(int s, int t) {
  long long ret = 1;
  for (int i = s - t + 1; i <= s; i++) {
    ret *= i;
    ret %= mod;
  }
  return ret;
}
long long fact(int s) {
  long long ret = 1;
  for (int i = 1; i <= s; i++) {
    ret *= i;
    ret %= mod;
  }
  return ret;
}
long long calc(int p, int q) {
  long long ans = 1;
  ans *= A(n - x, p);
  ans %= mod;
  ans *= A(x - 1, q);
  ans %= mod;
  ans *= fact(n - p - q - 1);
  ans %= mod;
  return ans;
}
int main() {
  cin >> n >> x >> pos;
  bin(a, x);
  q--;
  ans *= A(n - x, p);
  ans %= mod;
  ans *= A(x - 1, q);
  ans %= mod;
  ans *= fact(n - p - q - 1);
  ans %= mod;
  cout << ans << endl;
  return 0;
}
