include Math

d, n, bounce_max = gets.split.map(&:to_i)
all_obs = (1..n).map { gets.split.map(&:to_i) }
min_v = Float::INFINITY

(0..bounce_max).each do |bounce|
    max = 0
    bounce_point = (0..bounce+1).map {|k| k * d.to_f / (bounce + 1)}
    next if bounce_point.any? {|x| all_obs.map(&:first).any?{|u| (x - u).abs < 0.001}}

    bounce_point.each_cons(2) do |x1, x2|
        obs = all_obs.select {|x, y| x1 < x && x < x2}
        m = obs.map {|u, v| v.to_f / ((u - x1) * (x2 - u))}.max || 0
        max = m if m > max
    end

    vx = sqrt(1.0 / (2 * max))
    vy = vx * max * d.to_f / (bounce+1)
    vxy = sqrt(vx ** 2 + vy ** 2)
    min_v = vxy if vxy < min_v
end

p min_v