#include <bits/stdc++.h>
long long A(int a, int b) {
  long long ans = 1;
  for (int i = 0; i < b; i++) ans = ans * (a - i) % 1000000007;
  return ans;
}
int main() {
  int n, x, pos;
  scanf("%d%d%d", &n, &x, &pos);
  int small = 0, large = 0;
  int left = 0, right = n;
  while (left < right) {
    int middle = (left + right) / 2;
    if (middle < pos) {
      small++;
      left = middle + 1;
    } else if (middle > pos) {
      large++;
      right = middle;
    } else
      left = middle + 1;
  }
  long long ans = 1;
  ans = ans * A(x - 1, small) % 1000000007 * A(n - x, large) % 1000000007 *
        A(n - 1 - small - large, n - 1 - small - large) % 1000000007;
  printf("%lld\n", ans);
  return 0;
}
