Problem:
Score : 600 points

Problem Statement

Given are N points (x_i, y_i) in a two-dimensional plane.

Find the minimum radius of a circle such that all the points are inside or on it.

Constraints

2 \leq N \leq 50

0 \leq x_i \leq 1000

0 \leq y_i \leq 1000

The given N points are all different.

The values in input are all integers.

Input

Input is given from Standard Input in the following format:

N
x_1 y_1
:
x_N y_N

Output

Print the minimum radius of a circle such that all the N points are inside or on it.

Your output will be considered correct if the absolute or relative error from our answer is at most 10^{-6}.

Sample Input 1

2
0 0
1 0

Sample Output 1

0.500000000000000000

Both points are contained in the circle centered at (0.5,0) with a radius of 0.5.

Sample Input 2

3
0 0
0 1
1 0

Sample Output 2

0.707106781186497524

Sample Input 3

10
10 9
5 9
2 0
0 0
2 7
3 3
2 5
10 0
3 7
1 9

Sample Output 3

6.726812023536805158

If the absolute or relative error from our answer is at most 10^{-6}, the output will be considered correct.

Solution in Ruby (2.3.3) (judge verdict: Accepted)

#https://atcoder.jp/contests/abc151/submissions/9485142
#最小包含問題
#三分探索(二次元)
def distance(x1, y1, x2, y2)
  dx = x1 - x2
  dy = y1 - y2
  Math.sqrt(dx ** 2 + dy **2 )
end

def f(x, y)
  max = 0
  XY.each do |a, b|
    max = [max, distance(x, y, a, b)].max
  end
  max
end

def g(x)
  l = 0
  r = 1000
  80.times do
    cl = (l * 2 + r)/3.0
    cr = (l + r * 2)/3.0
    if f(x, cl) > f(x, cr)
      l = cl
    else
      r = cr
    end
  end
  f(x, l)
end

def main()
  l = 0
  r = 1000
  80.times do
    cl = (l * 2 + r)/3.0
    cr = (l + r * 2)/3.0
    if g(cl) > g(cr)
      l = cl
    else
      r = cr
    end
  end
  puts sprintf("%.12f", g(l))
end

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