#include <iostream>
#include <vector>
#include <cmath>
#include <map>
#include <numeric>
#include <algorithm>
 
using namespace std;
 
typedef long long ll;
 
const int MOD = 1e9 + 7;
 
// Function for modular exponentiation (b^e % MOD)
ll power(ll base, ll exp) {
    ll res = 1;
    base %= MOD;
    while (exp > 0) {
        if (exp % 2 == 1) res = (res * base) % MOD;
        base = (base * base) % MOD;
        exp /= 2;
    }
    return res;
}
 
// Function to compute modular inverse of n under modulo MOD
ll modInverse(ll n) {
    return power(n, MOD - 2);
}
 
// Precompute factorials up to a small limit (max exponent will be ~log2(10^14) < 50)
vector<ll> fact(61);
 
void precompute_factorials() {
    fact[0] = 1;
    for (int i = 1; i <= 60; i++) {
        fact[i] = (fact[i - 1] * i) % MOD;
    }
}
 
// Calculates C(N + k - 1, k) for large N
ll combinations_large_n(ll N, int k) {
    if (k == 0) return 1;
    if (k < 0) return 0;
 
    ll n_mod = N % MOD;
    ll num = 1;
    for (int i = 0; i < k; ++i) {
        num = (num * ((n_mod + i) % MOD)) % MOD;
    }
 
    ll den_inv = modInverse(fact[k]);
    return (num * den_inv) % MOD;
}
 
// Function to get prime factorization of a number
map<ll, int> get_prime_factorization(ll n) {
    map<ll, int> factors;
    for (ll i = 2; i * i <= n; ++i) {
        while (n % i == 0) {
            factors[i]++;
            n /= i;
        }
    }
    if (n > 1) {
        factors[n]++;
    }
    return factors;
}
 
// Calculates the number of ways to form 'num' by multiplying N integers
ll calculate_ways(ll num, ll N, map<ll, ll>& memo) {
    if (memo.count(num)) {
        return memo[num];
    }
 
    map<ll, int> factors = get_prime_factorization(num);
    ll ans = 1;
    for (auto const& [prime, count] : factors) {
        ans = (ans * combinations_large_n(N, count)) % MOD;
    }
    return memo[num] = ans;
}
 
void solve(int case_num) {
    ll N, A, B;
    cin >> N >> A >> B;
 
    // Find all divisors of B
    vector<ll> divisors;
    for (ll i = 1; i * i <= B; ++i) {
        if (B % i == 0) {
            divisors.push_back(i);
            if (i * i != B) {
                divisors.push_back(B / i);
            }
        }
    }
 
    ll total_ways = 0;
    map<ll, ll> memo; // Memoization for calculate_ways
 
    for (ll d : divisors) {
        if (d <= A) {
            ll ways1 = calculate_ways(d, N, memo);
            ll ways2 = calculate_ways(B / d, N, memo);
            total_ways = (total_ways + (ways1 * ways2) % MOD) % MOD;
        }
    }
 
    cout << "Case #" << case_num << ": " << total_ways << endl;
}
 
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
 
    precompute_factorials();
 
    int T;
    cin >> T;
    for (int i = 1; i <= T; ++i) {
        solve(i);
    }
 
    return 0;
}