MOD=10**9+7
cnt=0; sum=0; prev=nil; can=true; h=Hash.new(0)
def gs() gets.chomp end
def gi() gets.to_i end
def gsmi() gets.chomp.split.map(&:to_i) end

def desc(ar) ar.sort!{|x,y|y<=>x} end
def min(a,b) a<=b ? a : b end
def max(a,b) a>=b ? a : b end
def sum(ar) ar.inject(:+) end

def C(a,b) b==0||a==b ? 1 : (b=a-b if a/2<b;(a-b+1..a).inject(:*)/(1..b).inject(:*)) end

def puts_yesno(can) puts(can ? 'Yes' : 'No') end
def putsend(s) puts s; exit end
def debug(k,v) puts "#{k}:#{v}" end
########### ( ˘ω˘ )ｽﾔｧ… ###########
n=gi
xy=n.times.map{gsmi}

lim=(0.1)**7
# Rを二分探索
# lはNG,rはOK
l=0
r=1000*1.5
cen=(l+r)/2
while r-l>lim do
  # すべての２点について、その点を中心とした半径Rの円２つが1点か２点で交わればOK
  can=true
  cen=(l+r)/2
  #puts "l:#{l},r:#{r},cen:#{cen}"
  n.times do |i|
    n.times do |j|
      dx=xy[i][0]-xy[j][0]
      dy=xy[i][1]-xy[j][1]
      d=Math.hypot(dx,dy)

      if d>cen*2
        # 0
        can=false
        break
      elsif cen*2-d>lim
        # 2
        next
      else # cen*2-d<=lim
        # 2点で交わったときでも2Rがlim以下なら1点で交わってるものとする
        # 1点で交わったとして、その点からすべての点の距離がRいないならOK
        cx=(xy[i][0]+xy[j][0])/2.0
        cy=(xy[i][1]+xy[j][1])/2.0
        n.times do |k|
          dx=cx-xy[k][0]
          dy=cy-xy[k][1]
          d=Math.hypot(dx,dy)
          if d>cen
            break
          end
        end
      end
    end
    break unless can
  end

  if can
    r=cen
  else
    l=cen
  end
end

puts r