Problem: 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}.

Examples

Input

2
0 0
1 0


Output

0.500000000000000000


Input

3
0 0
0 1
1 0


Output

0.707106781186497524


Input

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


Output

6.726812023536805158

Solution (in PYTHON3):

Solution:
def calc_intersection(z1, z2, R):
  d2 = (z1[0]-z2[0])**2 + (z1[1]-z2[1])**2
  d = d2 ** 0.5
  if R < d/2:
    return None
  else:
    m = [(z1[0]+z2[0])*0.5, (z1[1]+z2[1])*0.5]
    l = (R**2/d2 - 0.25)**0.5
    v = [l*(z2[1]-z1[1]), l*(z1[0]-z2[0])]
    return [[m[0]+v[0], m[1]+v[1]], [m[0]-v[0], m[1]-v[1]]]


def check(R):
  intersections = []
  for i in range(N):
    for j in range(i+1, N):
      points = calc_intersection(xy[i], xy[j], R)
      if points is None:
        return False
      else:
        intersections.extend(points)
  
  for px, py in intersections:
    res = True
    for x, y in xy:
      res *= ((x-px)**2 + (y-py)**2 <= R**2+0.000001)
      if not res:
        break
    if res:
      return True
  return False


N = int(input())
xy = [list(map(int, input().split())) for i in range(N)]
left = 0 # False
right = 500 * 2**0.5 # True
while right - left > 0.000001:
  mid = (left + right) / 2
  if check(mid):
    right = mid
  else:
    left = mid

print(right)