/*input
83 91 42
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
typedef vector <int> vi;
typedef vector<vi> vvi;
typedef map<int,int> mii;
typedef pair<int,int> pii;
#define pb push_back
#define INF 1000000000
#define mp make_pair
#define MOD 1000000007
#define F first
#define S second
const double PI=3.141592653589793238462643383279502884197169399375105820974944;
#define REP(i,n) for(int i=0;i<(n);i++)
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REPD(i,n) for(int i=(n);i>=0;i--)
#define FORD(i,a,b) for(int i=(a);i>=b;i--)
#define all(v) v.begin(),v.end()
#define itr ::iterator it
#define WL(t) while(t --)
#define gcd(a,b) __gcd((a),(b))
#define lcm(a,b) ((a)*(b))/gcd((a),(b))
#define remin(a,b) (a) = min((a),(b))
#define remax(a,b) (a) = max((a),(b))
int n,x,k,dp[105][105][55];
vi cop[105];
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> x >> k;
FOR(i,1,101){
if(i == x) dp[1][i][1] = 1;
else dp[1][i][0] = 1;
FOR(m,1,101){
if(gcd(i,m) == 1) cop[i].pb(m);
}
}
FOR(i,2,n+1){
FOR(j,1,101){
FOR(l,0,(i+3)/2){
int cur = 0;
if(j == x){
if (l == 0){
dp[i][j][l] = 0;
continue;
}
for(int m = 0; m < cop[j].size(); m++){
cur += dp[i-1][cop[j][m]][l-1];
}
dp[i][j][l] = cur%MOD;
continue;
}
for(int m = 0; m < cop[j].size(); m++){
cur += dp[i-1][cop[j][m]][l];
}
dp[i][j][l] = cur%MOD;
}
}
}
int ans = 0;
FOR(j,1,101) ans += dp[n][j][k];
cout << ans%MOD << endl;
}
LyppbnB1dAo4MyA5MSA0MgoqLwkJCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiNkZWZpbmUgaW50IGxsCnR5cGVkZWYgdmVjdG9yIDxpbnQ+IHZpOwp0eXBlZGVmIHZlY3Rvcjx2aT4gdnZpOwp0eXBlZGVmIG1hcDxpbnQsaW50PiBtaWk7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiBwaWk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgSU5GIDEwMDAwMDAwMDAKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZApjb25zdCBkb3VibGUgUEk9My4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI4ODQxOTcxNjkzOTkzNzUxMDU4MjA5NzQ5NDQ7CiNkZWZpbmUgUkVQKGksbikgZm9yKGludCBpPTA7aTwobik7aSsrKQojZGVmaW5lIEZPUihpLGEsYikgZm9yKGludCBpPShhKTtpPChiKTtpKyspCiNkZWZpbmUgUkVQRChpLG4pIGZvcihpbnQgaT0obik7aT49MDtpLS0pCiNkZWZpbmUgRk9SRChpLGEsYikgZm9yKGludCBpPShhKTtpPj1iO2ktLSkKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBpdHIgOjppdGVyYXRvciBpdAojZGVmaW5lIFdMKHQpIHdoaWxlKHQgLS0pCiNkZWZpbmUgZ2NkKGEsYikgX19nY2QoKGEpLChiKSkKI2RlZmluZSBsY20oYSxiKSAoKGEpKihiKSkvZ2NkKChhKSwoYikpCiNkZWZpbmUgcmVtaW4oYSxiKSAoYSkgPSBtaW4oKGEpLChiKSkKI2RlZmluZSByZW1heChhLGIpIChhKSA9IG1heCgoYSksKGIpKQoKaW50IG4seCxrLGRwWzEwNV1bMTA1XVs1NV07CnZpIGNvcFsxMDVdOwoKc2lnbmVkIG1haW4oKSB7CgkKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZSgwKTsKCWNvdXQudGllKDApOwoJCgljaW4gPj4gbiA+PiB4ID4+IGs7CgoJRk9SKGksMSwxMDEpewoJCWlmKGkgPT0geCkgZHBbMV1baV1bMV0gPSAxOwoJCWVsc2UgZHBbMV1baV1bMF0gPSAxOwoJCUZPUihtLDEsMTAxKXsKCQkJaWYoZ2NkKGksbSkgPT0gMSkgY29wW2ldLnBiKG0pOwoJCX0KCX0KCUZPUihpLDIsbisxKXsKCQlGT1IoaiwxLDEwMSl7CgkJCUZPUihsLDAsKGkrMykvMil7CgkJCQlpbnQgY3VyID0gMDsKCQkJCWlmKGogPT0geCl7CgkJCQkJaWYgKGwgPT0gMCl7CgkJCQkJCWRwW2ldW2pdW2xdID0gMDsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCWZvcihpbnQgbSA9IDA7IG0gPCBjb3Bbal0uc2l6ZSgpOyBtKyspewoJCQkJCQljdXIgKz0gZHBbaS0xXVtjb3Bbal1bbV1dW2wtMV07CgkJCQkJfQoJCQkJCWRwW2ldW2pdW2xdID0gY3VyJU1PRDsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCWZvcihpbnQgbSA9IDA7IG0gPCBjb3Bbal0uc2l6ZSgpOyBtKyspewoJCQkJCWN1ciArPSBkcFtpLTFdW2NvcFtqXVttXV1bbF07CgkJCQl9CgkJCQlkcFtpXVtqXVtsXSA9IGN1ciVNT0Q7CgkJCX0KCQl9Cgl9CglpbnQgYW5zID0gMDsKCUZPUihqLDEsMTAxKSBhbnMgKz0gZHBbbl1bal1ba107Cgljb3V0IDw8IGFucyVNT0QgPDwgZW5kbDsKfQ==