#include <bits/stdc++.h>

using namespace std;

constexpr int mod = 1e9 + 7;
int n,m,id;
int div0, div1;
long long ans = 1;

void getdiv(){
    for(int i = 1; i*i <= id; ++i){
        if(id % i == 0){
            div0 += 2;
            if(i*i == id) --div0;
        }
    }
    --div0;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m >> id;
    getdiv();

    div1 = m/id - 1;
    if(div0-n+1 < 0 or div1 - n + 1 < 0){
        cout << 0;
        return 0;
    }
    for(int i = div0; i > max(div0-n+1, 0); --i){
        ans *= i;
        //cout << i << " " << ans << "\n";
        ans %= mod;
    }
    for(int i = div1; i > max(div1-n+1,0); --i){
        ans *= i;
        ans %= mod;
    }
    ans *= 2;
    if(ans > mod) ans -= mod;
    cout << ans << '\n';
    return 0;
}