### constant

DELTA = 1e-10

### main

d, n, b = gets.split.map(&:to_i)
#p [d, n, b]

phs = Array.new(n){gets.split.map(&:to_f)}
#p phs

min_v2 = Float::INFINITY

for b0 in (0..b)
  l = d.to_f / (b0 + 1)
  max_vx2 = max_vy2 = l / 2
  max_v2 = l
  ok = true
  
  phs.each do |pi, hi|
    xi = pi - (pi / l).floor * l
    if xi.abs < DELTA || (l - xi).abs < DELTA
      ok = false
      break
    end

    yi = -(xi * xi - l * xi) / (2 * max_vx2)
    if yi < hi
      vx2 = -(xi * xi - l * xi) / (2 * hi)
      vy2 = l * l / (4 * vx2)
      v2 = vx2 + vy2
      if max_v2 < v2
        max_v2 = v2
        max_vx2 = vx2
        max_vy2 = vy2
      end
    end
  end

  min_v2 = max_v2 if ok && min_v2 > max_v2
end

puts Math.sqrt(min_v2)