#include <bits/stdc++.h>
int n, x, pos;
const int MOD = 1e9 + 7;
long long A(int m, int n) {
  long long res = 1;
  for (int i = n; i >= n - m + 1; i--) res *= i, res %= MOD;
  return res;
}
int main() {
  scanf("%d%d%d", &n, &x, &pos);
  int mr, ls;
  mr = ls = 0;
  int l = 0, r = n;
  while (l < r) {
    int mid = l + r >> 1;
    if (mid > pos) {
      r = mid;
      if (mid != pos) mr++;
    } else {
      l = mid + 1;
      if (mid != pos) ls++;
    }
  }
  long long ans = 1;
  ans = A(ls, x - 1) % MOD * A(mr, n - x) % MOD *
        A(n - ls - mr - 1, n - ls - mr - 1) % MOD;
  printf("%lld", ans);
}
