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 math
#import numpy as np
import queue
from collections import deque,defaultdict
import heapq as hpq
from sys import stdin,setrecursionlimit
#from scipy.sparse.csgraph import dijkstra
#from scipy.sparse import csr_matrix
ipt = stdin.readline
setrecursionlimit(10**7)

def main():
    n = int(ipt())
    pts = []

    def cp(i,j,r):
        xi,yi = i
        xj,yj = j
        cx = (xi+xj)/2
        cy = (yi+yj)/2
        vecx = yj-yi
        vecy = xi-xj
        d = math.sqrt(vecx**2+vecy**2)/2
        kt = math.sqrt(vecx**2+vecy**2)
        vecx /= kt
        vecy /= kt
        if d > r:
            return []
        else:
            d2 = math.sqrt(r**2-d**2)
            return [(cx+vecx*d2,cy+vecy*d2),(cx-vecx*d2,cy-vecy*d2)]

    def dist(i,j,r):
        xi,yi = i
        xj,yj = j
        return math.sqrt((xj-xi)**2+(yj-yi)**2) <= r

    for _ in range(n):
        pts.append(tuple(map(int,ipt().split())))

    l = 0
    r = 1000
    while r-l > 10**(-7):
        mid = l+(r-l)/2
        f = False
        for i in pts:
            for j in pts:
                if i == j:
                    continue
                for li in cp(i,j,mid):
                    f = True
                    for k in pts:
                        if k == i or k == j:
                            continue
                        if not dist(li,k,mid):
                             f = False
                    if f:
                        break
                if f:
                    break
            if f:
                break
        if f:
            r = mid
        else:
            l = mid
    print(l)

    return

if __name__ == '__main__':
    main()