local mma = math.max
local msq = math.sqrt
local n = io.read("*n")
local x, y = {}, {}
for i = 1, n do
  x[i], y[i] = io.read("*n", "*n")
end
local rep = 1000

local function getlength(tx, ty)
  local sq = 0
  for i = 1, n do
    local tmp = (tx - x[i]) * (tx - x[i]) + (ty - y[i]) * (ty - y[i])
    sq = mma(sq, tmp)
  end
  return sq
end


local function solvex(ty)
  local xmin, xmax = 0, 1000
  local v1, v2 = getlength(xmin, ty), getlength(xmax, ty)
  for i = 1, rep do
    local xmid1, xmid2 = (xmin * 2 + xmax) / 3, (xmin + xmax * 2) / 3
    local m1, m2 = getlength(xmid1, ty), getlength(xmid2, ty)
    if v1 > m1 then
      if m2 > v2 then
        xmin = xmid2
        v1 = m2
      elseif m1 > m2 then
        xmin = xmid1
        v1 = m1
      else
        xmax = xmid2
        v2 = m2
      end
    else
      if m2 < v2 then
        xmax = xmid1
        v2 = m1
      elseif m1 < m2 then
        xmin = xmid1
        v1 = m1
      else
        xmax = xmid2
        v2 = m2
      end
    end
  end
  -- print(xmin)
  return (v1 + v2) / 2
end
-- print(solvex(0.439))
-- print(solvex(0.466))
-- print(solvex(0.492))
-- print(solvex(0.519))
-- for i = 1, 1000 do
--   local yy = 0.45 + 0.10 * i / 1000
--   print(yy, solvex(yy))
-- end
-- os.exit()
local ymin, ymax = 0, 1000
local v1, v2 = solvex(ymin), solvex(ymax)
for i = 1, rep do
  local ymid1, ymid2 = (ymin * 2 + ymax) / 3, (ymin + ymax * 2) / 3
  local m1, m2 = solvex(ymid1), solvex(ymid2)
  if v1 > m1 then
    if m2 > v2 then
      ymin = ymid2
      v1 = m2
    elseif m1 > m2 then
      ymin = ymid1
      v1 = m1
    else
      ymax = ymid2
      v2 = m2
    end
  else
    if m2 < v2 then
      ymax = ymid1
      v2 = m1
    elseif m1 < m2 then
      ymin = ymid1
      v1 = m1
    else
      ymax = ymid2
      v2 = m2
    end
  end
  -- if i < 20 then print(ymin, ymax) end
  -- if i % 20 == 0 then print(ymin, ymax) end
end

local ret = msq(solvex((ymin + ymax) / 2))
print(string.format("%.10f", ret))
