module Geometry
  EPS = 1e-11
  COUNTER_CLOCKWISE = 1
  CLOCKWISE = -1
  ONLINE_BACK = 2
  ONLINE_FRONT = -2
  ON_SEGMENT = 0

  Point = Struct.new(:y, :x) do
    def +(point)
      Point.new(y + point.y, x + point.x)
    end

    def -(point)
      Point.new(y - point.y, x - point.x)
    end
  end

  Circle = Struct.new(:c, :r)
  Line = Struct.new(:p1, :p2)

  def norm(v)
    v.x ** 2 + v.y ** 2
  end

  def abs(v)
    Math.sqrt(norm(v))
  end

  def dot(v1, v2)
    v1.x * v2.x + v1.y * v2.y
  end 
  def cross(v1, v2)
    v1.x * v2.y - v1.y * v2.x
  end

  def arg(v)
    Math.atan2(v.y, v.x)
  end

  def polar(a, r)
    Point.new(Math.sin(r) * a, Math.cos(r) * a)
  end

  def ccw(p0, p1, p2)
    a = p1 - p0
    b = p2 - p0

    return COUNTER_CLOCKWISE if cross(a, b) > EPS
    return CLOCKWISE if cross(a, b) < -EPS
    return ONLINE_BACK if dot(a, b) < -EPS
    return ONLINE_FRONT if norm(a) < norm(b)

    ON_SEGMENT
  end

  def intersect(p1, p2, p3, p4)
    ccw(p1, p2, p3) * ccw(p1, p2, p4) <= 0 && ccw(p3, p4, p1) * ccw(p3, p4, p2) <= 0
  end

  def get_circle_cross_point(c1, c2)
    d = abs(c1.c - c2.c)
    # a = Math.acos(Rational(c1.r ** 2 + d ** 2 - c2.r ** 2, 2 * c1.r * d))
    a = Math.acos([1.0, Rational(c1.r ** 2 + d ** 2 - c2.r ** 2, 2 * c1.r * d)].min)
    t = arg(c2.c - c1.c)
    [c1.c + polar(c1.r, t + a), c1.c + polar(c1.r, t - a)]
  end
end

include Geometry

N = gets.to_i
P = N.times.map { gets.split.map(&:to_i) }

def f(r)
  circles = P.map { |x, y| Circle.new(Point.new(y, x), r) }
  cross_points = []

  0.upto(N - 2) do |i|
    c1 = circles[i]

    (i + 1).upto(N - 1) do |j|
      c2 = circles[j]

      dy = c2.c.y - c1.c.y
      dx = c2.c.x - c1.c.x
      d = Math.sqrt(dy ** 2 + dx ** 2)

      return false if d - 2 * r > 0

      cross_points << get_circle_cross_point(c1, c2)
    end
  end

  cross_points = cross_points.flatten.uniq

  cross_points.any? { |p1|
    P.all? { |x, y|
      dy = p1.y - y
      dx = p1.x - x

      Math.sqrt(dy ** 2 + dx ** 2) <= r + EPS
    }
  }
end

loop_cnt = 100
ok = 10_000
ng = 0

while loop_cnt > 0
  mid = (ok + ng) / 2.0

  if f(mid)
    ok = mid
  else
    ng = mid
  end

  loop_cnt -= 1
end

puts ok
