#include <bits/stdc++.h>
using namespace std;
const long long Mod = 1e9 + 7;
long long a[1010], pw[1010], iv[1010];
long long qp(long long x, long long y) {
  long long s = 1;
  for (; y; y >>= 1) (y & 1) && (s = s * x % Mod), x = x * x % Mod;
  return s;
}
void init(long long n) {
  pw[0] = 1;
  for (long long i = 1; i <= n; i++) pw[i] = pw[i - 1] * i % Mod;
  iv[n] = qp(pw[n], Mod - 2);
  for (long long i = n - 1; i >= 0; i--) iv[i] = iv[i + 1] * (i + 1) % Mod;
}
long long A(long long n, long long m) {
  if (n < m) return 0;
  return pw[n] * iv[n - m] % Mod;
}
signed main() {
  long long n, x, pos;
  cin >> n >> x >> pos;
  init(n);
  long long l = 0, r = n;
  while (l < r) {
    long long mid = l + r >> 1;
    if (pos >= mid)
      l = mid + 1, a[mid] = -1;
    else
      r = mid, a[mid] = 1;
  }
  a[pos] = 0;
  long long cnt1 = 0, cnt2 = 0;
  for (long long i = 0; i < n; i++) {
    if (a[i] == 1) cnt1++;
    if (a[i] == -1) cnt2++;
  }
  long long t1 = A(n - x, cnt1);
  long long t2 = A(x - 1, cnt2);
  long long t3 = pw[n - cnt1 - cnt2 - 1];
  cout << t1 * t2 % Mod * t3 % Mod << endl;
  return 0;
}
