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:
import itertools
import math


def distance(a, b):
    """点a(a_x, a_y)と点b(b_x, b_y)の距離を返す関数"""
    a_x, a_y = a
    b_x, b_y = b
    d = ((a_x - b_x)**2 + (a_y - b_y)**2) ** 0.5
    return d


def edges(a, b, c, sort=False):
    """三角形abcの辺の長さを返す関数（sort=Trueにした場合、長い順に返す）"""
    a_x, a_y = a
    b_x, b_y = b
    c_x, c_y = c
    d1 = ((a_x - b_x)**2 + (a_y - b_y)**2) ** 0.5
    d2 = ((b_x - c_x)**2 + (b_y - c_y)**2) ** 0.5
    d3 = ((c_x - a_x)**2 + (c_y - a_y)**2) ** 0.5
    if sort:
        d1, d2, d3 = sorted([d1, d2, d3], reverse=True)
    return d1, d2, d3


def is_acute(d1, d2, d3):
    """3辺の長さより鋭角三角形かどうかを真偽値で返す"""
    d1, d2, d3 = sorted([d1, d2, d3], reverse=True)
    return d1**2 < d2**2 + d3**2


N = int(input())
xy = tuple(tuple(int(i) for i in input().split()) for _ in range(N))

if N == 2:
    ans = distance(xy[0], xy[1]) / 2
else:
    ans = 0
    for p1, p2, p3 in itertools.combinations(xy, 3):
        d1, d2, d3 = edges(p1, p2, p3)
        if is_acute(d1, d2, d3):
            r = d1*d2*d3 / ((d1+d2+d3)*(d1+d2-d3)*(d1-d2+d3)*(-d1+d2+d3))**0.5
            ans = max(ans, r)
        else:
            r = max(d1, d2, d3) / 2
            ans = max(ans, r)

print(ans)