$N, $K, $M = gets.split.map(&:to_i) $factors = [] n = $N i = 2 while i * i <= n and n > 0 cnt = 0 while n % i == 0 n = n / i cnt += 1 end if cnt > 0 $factors.push([i, cnt * $K]) end i += 1 end if n > 1 $factors.push([n, 1 * $K]) end require "set" $seen = Set.new def dfs(i, val) if val > $M return end $seen.add(val) if i >= $factors.size return end dfs(i + 1, val) f = $factors[i] p = f[0] f[1].times do dfs(i + 1, val * p) p *= f[0] if p > $M break end end end dfs(0, 1) puts $seen.size