#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using P = pair; constexpr int INF = 1001001001; constexpr int mod = 1000000007; // constexpr int mod = 998244353; template inline bool chmax(T& x, T y){ if(x < y){ x = y; return true; } return false; } template inline bool chmin(T& x, T y){ if(x > y){ x = y; return true; } return false; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N, K, M; cin >> N >> K >> M; int X = N; map prime; for(int i = 2; i * i <= X; ++i){ while(X % i == 0){ prime[i] += 1; X /= i; } } if(X != 1) prime[X] = 1; map mp; mp[1] = 1; for(auto [p, c] : prime){ auto nxt = mp; for(auto [key, val] : mp){ ll num = key; for(ll i = 0; i < (ll)c * K; ++i){ if((num *= p) > M) break; nxt[num] += 1; } } mp = move(nxt); } cout << mp.size() << endl; return 0; }