//...START BY DOING WHAT IS NECESSARY, THEN WHAT IS POSSIBLE AND SUDDENLY YOU ARE DOING THE IMPOSSIBLE...
#include <bits/stdc++.h>
using namespace std;
#define FAST_FURIER ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define pb push_back
#define mk make_pair
#define rep(i,a,N) for(ll i=a;i<N;i++)
#define rrep(i,a,N) for(ll i=a;i>N;i--)
typedef long long ll;
#define M 1000000007
bool comp(int x,int y)
{
return x > y;
}
/*..............................code starts here........................*/
// S is the courage to continue that counts.
ll m,n,k,x,post,s,t;
ll factorial[1002];
void fac(){
factorial[1] = 1;
factorial[0] = 1;
rep(i,2,1002){
factorial[i] = (factorial[i-1] * i)%M;
}
}
ll power(ll no,ll p)
{
if(p == 1)
return no;
if(p == 0)
return 1;
ll q = power(no,p/2);
q = (q*q)%M;
if(p % 2 != 0)
q = (q*no)%M;
return q;
}
vector<int>vec;
void binsearch(){
int left = 0,right = n;
while(left < right){
int middle = int((left+right)/2);
if(middle <= post){
left = middle+1;
}
else right = middle;
if(middle != n) vec.pb(middle);
}
rep(i,0,vec.size()){
if(vec[i] < post) ++s;
else if(vec[i] > post) ++t;
}
}
int main() {
FAST_FURIER;
int t=1;
//cin >> t;
// string a,b;
fac();
while(t--)
{
cin >> n >> x >> post;
binsearch();
//formula = (n-(1+t+s))! *((x-1)! * (n-x)!)/(x-1-s)!*(n-x-t)!
if(s > x-1 or t > n-x) cout << 0 << endl;
else{
ll a = factorial[n-1-t-s], b = factorial[x-1], c = factorial[n-x];
ll d = power(factorial[x-1-s],M-2)%M, e = power(factorial[n-x-t],M-2)%M;
a = ((a*b)%M*c)%M;
d = (d*e)%M;
a = (a*d)%M;
cout << a << endl;
}
}
}
// Author : shivam_123
// g++ -std=c++17
Ly8uLi5TVEFSVCBCWSBET0lORyBXSEFUIElTIE5FQ0VTU0FSWSwgVEhFTiBXSEFUIElTIFBPU1NJQkxFIEFORCBTVURERU5MWSBZT1UgQVJFIERPSU5HIFRIRSBJTVBPU1NJQkxFLi4uIAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBGQVNUX0ZVUklFUiBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbWsgbWFrZV9wYWlyCiNkZWZpbmUgcmVwKGksYSxOKSBmb3IobGwgaT1hO2k8TjtpKyspCiNkZWZpbmUgcnJlcChpLGEsTikgZm9yKGxsIGk9YTtpPk47aS0tKQp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKI2RlZmluZSBNIDEwMDAwMDAwMDcKYm9vbCBjb21wKGludCB4LGludCB5KQp7CiAgICByZXR1cm4geCA+IHk7Cn0KIAogCi8qLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uY29kZSBzdGFydHMgaGVyZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiovCi8vIFMgaXMgdGhlIGNvdXJhZ2UgdG8gY29udGludWUgdGhhdCBjb3VudHMuCmxsIG0sbixrLHgscG9zdCxzLHQ7CmxsIGZhY3RvcmlhbFsxMDAyXTsKdm9pZCBmYWMoKXsKICAgIGZhY3RvcmlhbFsxXSA9IDE7CiAgICBmYWN0b3JpYWxbMF0gPSAxOwogICAgcmVwKGksMiwxMDAyKXsKICAgICAgICBmYWN0b3JpYWxbaV0gPSAoZmFjdG9yaWFsW2ktMV0gKiBpKSVNOwogICAgfQp9CmxsIHBvd2VyKGxsIG5vLGxsIHApCnsKICAgIGlmKHAgPT0gMSkKICAgIHJldHVybiBubzsKICAgIGlmKHAgPT0gMCkKICAgIHJldHVybiAxOwogICAgbGwgcSA9IHBvd2VyKG5vLHAvMik7CiAgICBxID0gKHEqcSklTTsKICAgIGlmKHAgJSAyICE9IDApCiAgICBxID0gKHEqbm8pJU07CiAgICByZXR1cm4gcTsKfQp2ZWN0b3I8aW50PnZlYzsKdm9pZCBiaW5zZWFyY2goKXsKICAgIGludCBsZWZ0ID0gMCxyaWdodCA9IG47CiAgICB3aGlsZShsZWZ0IDwgcmlnaHQpewogICAgICAgIGludCBtaWRkbGUgPSBpbnQoKGxlZnQrcmlnaHQpLzIpOwogICAgICAgIGlmKG1pZGRsZSA8PSBwb3N0KXsKICAgICAgICAgICAgbGVmdCA9IG1pZGRsZSsxOwogICAgICAgIH0KICAgICAgICBlbHNlIHJpZ2h0ID0gbWlkZGxlOwogICAgICAgIGlmKG1pZGRsZSAhPSBuKSB2ZWMucGIobWlkZGxlKTsKICAgIH0KICAgIHJlcChpLDAsdmVjLnNpemUoKSl7CiAgICAgICAgaWYodmVjW2ldIDwgcG9zdCkgKytzOwogICAgICAgIGVsc2UgaWYodmVjW2ldID4gcG9zdCkgKyt0OwogICAgfQp9CmludCBtYWluKCkgewogICAgRkFTVF9GVVJJRVI7CiAgICBpbnQgdD0xOwogICAgLy9jaW4gPj4gdDsKICAgLy8gc3RyaW5nIGEsYjsKICAgIGZhYygpOwogICAgd2hpbGUodC0tKQogICAgewogICAgICAgIGNpbiA+PiBuID4+IHggPj4gcG9zdDsKICAgICAgICBiaW5zZWFyY2goKTsKICAgICAgICAvL2Zvcm11bGEgPSAobi0oMSt0K3MpKSEgKigoeC0xKSEgKiAobi14KSEpLyh4LTEtcykhKihuLXgtdCkhCiAgICAgICAgaWYocyA+IHgtMSBvciB0ID4gbi14KSBjb3V0IDw8IDAgPDwgZW5kbDsKICAgICAgICBlbHNlewogICAgICAgICAgICBsbCBhID0gZmFjdG9yaWFsW24tMS10LXNdLCBiID0gZmFjdG9yaWFsW3gtMV0sIGMgPSBmYWN0b3JpYWxbbi14XTsKICAgICAgICAgICAgbGwgZCA9IHBvd2VyKGZhY3RvcmlhbFt4LTEtc10sTS0yKSVNLCBlID0gcG93ZXIoZmFjdG9yaWFsW24teC10XSxNLTIpJU07CiAgICAgICAgICAgIGEgPSAoKGEqYiklTSpjKSVNOwogICAgICAgICAgICBkID0gKGQqZSklTTsKICAgICAgICAgICAgYSA9IChhKmQpJU07CiAgICAgICAgICAgIGNvdXQgPDwgYSA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KfQogCiAKIAovLyBBdXRob3IgOiBzaGl2YW1fMTIzCiAKLy8gZysrIC1zdGQ9YysrMTc=