N = gets.to_i C, V = gets.split.map(&:to_i) dp = Array.new(N + 1, Float::INFINITY) dp[1] = 0 1.upto(N - 1) do |i| 1.upto(Rational(N - i, i).ceil) do |j| n = i + i * j n = N if n > N cost = dp[i] + C + j * V dp[n] = cost if dp[n] > cost end end puts dp[N]