N = gets.to_i
XYs = readlines.map{|l| l.split.map(&:to_i)}
E = 1e-8

class Circle
  attr_accessor :r
  
  def initialize(zs)
    case zs.size
    when 2
      @c = zs.inject(:+) / 2
      @r = (@c - zs[0]).abs
    when 3
      x = zs.cycle.each_cons(3).take(3).inject(Complex(0)){|s, (a, b, c)| s + (a - b)*c.abs*c.abs}
      y = zs.cycle.each_cons(3).take(3).inject(Complex(0)){|s, (a, b, c)| s + (a - b)*c.conj}
      @c = x / y
      @r = (@c - zs[0]).abs
    end
  end

  def in?(z)
    (@c - z).abs <= @r + E
  end
end

zs = XYs.shuffle.map{|x, y| Complex(x, y)}
c = Circle.new(zs[0, 2])
(2 ... N).each do |i|
  c = Circle.new([zs[0], zs[i]]) unless c.in?(zs[i])
  (1 ... i).each do |j|
    c = Circle.new([zs[i], zs[j]]) unless c.in?(zs[j])
    (0 .. j).each do |k|
      c = Circle.new([zs[i], zs[j], zs[k]]) unless c.in?(zs[k])
    end
  end
end
puts c.r.to_f