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 main():
    import sys
    from math import sqrt, hypot
    input = sys.stdin.readline

    def dist(p1, p2):
        x1, y1 = p1
        x2, y2 = p2
        return hypot(x2-x1, y2-y1)

    def CP(x1, y1, r1, x2, y2, r2):
        rr0 = (x2 - x1) ** 2 + (y2 - y1) ** 2
        xd = x2 - x1
        yd = y2 - y1
        rr1 = r1 ** 2
        rr2 = r2 ** 2
        cv = (rr0 + rr1 - rr2)
        sv = sqrt(4 * rr0 * rr1 - cv ** 2)
        return (
            (x1 + (cv * xd - sv * yd) / (2. * rr0), y1 + (cv * yd + sv * xd) / (2. * rr0)),
            (x1 + (cv * xd + sv * yd) / (2. * rr0), y1 + (cv * yd - sv * xd) / (2. * rr0)),
        )

    N = int(input())
    P = []
    for _ in range(N):
        x, y = map(int, input().split())
        P.append((x, y))

    dmax = 0
    for i in range(N):
        for j in range(i+1, N):
            dmax = max(dmax, dist(P[i], P[j]))

    eps = 10**-8
    ok = 1000.
    ng = dmax / 2
    mid = (ok+ng)/2
    while ok - ng > 10**-7:
        cp_list = []
        for i in range(N-1):
            x1, y1 = P[i]
            for j in range(i+1, N):
                x2, y2 = P[j]
                cp1, cp2 = CP(x1, y1, mid, x2, y2, mid)
                cp_list.append(cp1)
                cp_list.append(cp2)
        flg = 0
        for p0 in cp_list:
            tmp = 1
            for p in P:
                if dist(p0, p) > mid + eps:
                    tmp = 0
            if tmp:
                flg = 1
                break
        if flg:
            ok = mid
        else:
            ng = mid
        mid = (ok+ng)/2
    print(ok)


if __name__ == '__main__':
    main()