#include <bits/stdc++.h>
using namespace std;
namespace IO {
inline long long read() {
  long long o = 0, f = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    o = o * 10 + c - '0';
    c = getchar();
  }
  return o * f;
}
}  // namespace IO
using namespace IO;
const int N = 2e3 + 7, M = 1e6 + 7, INF = 0x3f3f3f3f, Mod = 1e9 + 7;
int n, first, pos;
long long C(long long a, long long b) {
  long long res = 1;
  for (int i = a; i >= max(a - b + 1, 0LL); i--) {
    res = res * i % Mod;
  }
  return res;
}
int main() {
  cin >> n >> first >> pos;
  int l = 0, r = n;
  int max_cnt = 0, min_cnt = 0;
  while (l < r) {
    int mid = l + r >> 1;
    if (mid > pos) {
      max_cnt++;
      r = mid;
    } else {
      if (mid != pos) min_cnt++;
      l = mid + 1;
    }
  }
  long long ans = 1;
  ans = ans * C(first - 1, min_cnt) % Mod;
  ans = ans * C(n - first, max_cnt) % Mod;
  ans = ans * C(n - max_cnt - min_cnt - 1, n - max_cnt - min_cnt - 1) % Mod;
  cout << ans << endl;
  return 0;
}
