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 dist(A, B):
    return ((A[0]-B[0])**2 + (A[1]-B[1])**2)**.5


def circumcenter(A, B, C):
    # check if the points are colinear
    x1, y1 = B[0] - A[0], B[1] - A[1]
    x2, y2 = C[0] - A[0], C[1] - A[1]
    if abs(x1*y2 - x2*y1) < 1e-12:
        return None
    a = dist(B, C)
    b = dist(C, A)
    c = dist(A, B)
    cosA = (b**2+c**2-a**2) / (2*b*c)
    cosB = (c**2+a**2-b**2) / (2*c*a)
    cosC = (a**2+b**2-c**2) / (2*a*b)
    x = (a*cosA*A[0] + b*cosB*B[0] + c*cosC*C[0]) / (a*cosA + b*cosB + c*cosC)
    y = (a*cosA*A[1] + b*cosB*B[1] + c*cosC*C[1]) / (a*cosA + b*cosB + c*cosC)
    return x, y


N = int(input())
points = [tuple(map(int, input().split())) for i in range(N)]
if N == 2:
    print(dist(points[0], points[1]) / 2)
    exit()

ans = float('inf')

for i in range(N-1):
    for j in range(i+1, N):
        x = (points[i][0] + points[j][0]) / 2
        y = (points[i][1] + points[j][1]) / 2
        c = (x, y)
        r = dist(c, points[i])
        if r > ans:
            continue
        for point in points:
            d = dist(c, point)
            if abs(d - r) > 1e-6 and d > r:
                break
        else:
            ans = min(ans, r)

for i in range(N-2):
    for j in range(i+1, N-1):
        for k in range(j+1, N):
            c = circumcenter(points[i], points[j], points[k])
            if c is None:
                continue
            r = dist(c, points[i])
            if r > ans:
                continue
            for point in points:
                d = dist(c, point)
                if abs(d - r) > 1e-6 and d > r:
                    break
            else:
                ans = min(ans, r)
print(ans)