require 'prime' N, K, M = gets.split.map(&:to_i) P = N.prime_division L = P.size def dfs(i, v, checked, cache) if L <= i if cache[v] return 0 else cache[v] = true return 1 end end return 0 if checked[i][v] checked[i][v] = true res = 0 e, cnt = P[i] cnt *= K while cnt >= 0 res += dfs(i + 1, v, checked, cache) v *= e cnt -= 1 break if v > M end res end cache = Hash.new checked = Hash.new { |h, k| h[k] = {} } puts dfs(0, 1, checked, cache)