#include using namespace std; using Int = long long; template inline void chmin(T1 &a,T2 b){if(a>b) a=b;} template inline void chmax(T1 &a,T2 b){if(a map factorize(T x){ map res; for(Int i=2;i*i<=x;i++){ while(x%i==0){ x/=i; res[i]++; } } if(x!=1) res[x]++; return res; } template struct FixPoint : F{ FixPoint(F&& f):F(forward(f)){} template decltype(auto) operator()(Args&&... args) const{ return F::operator()(*this,forward(args)...); } }; template inline decltype(auto) MFP(F&& f){ return FixPoint{forward(f)}; } //INSERT ABOVE HERE signed main(){ Int n,k,m; cin>>n>>k>>m; auto fc=factorize(n); for(auto &p:fc) p.second*=k; using P = pair; vector

vp; for(auto &p:fc) vp.emplace_back(p); Int cnt=0; MFP([&](auto dfs,Int s,Int k)->void{ if(s>m) return; if(k==(Int)vp.size()){ cnt++; return; } for(Int i=0,t=1;i<=vp[k].second;i++){ dfs(s*t,k+1); t*=vp[k].first; if(s*t>m) break; } })(1,0); cout<