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
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
const double eps = 1e-8;
struct evol
{
    double x, y;
}a[N],O;
double R;
double sqr(double x) {return x * x;}
double dis(evol u,evol b) {return sqrt(sqr(u.x - b.x) + sqr(u.y - b.y));}
void work(evol p1,evol p2,evol p3)
{
    double A,b,c,d,e,f;
    A=p2.y-p1.y; 
	b=p3.y-p1.y;
	c=p2.x-p1.x;
	d=p3.x-p1.x;
    f=p3.x*p3.x+p3.y*p3.y-p1.x*p1.x-p1.y*p1.y;
    e=p2.x*p2.x+p2.y*p2.y-p1.x*p1.x-p1.y*p1.y;
    O.x=(A*f-b*e)/(2*A*d-2*b*c);
	O.y=(d*e-c*f)/(2*A*d-2*b*c);
    R = dis(O, p1);
}
int main()
{
    int n;
    scanf("%d", &n);
    for (int i=1;i<=n;++i)
		scanf("%lf%lf",&a[i].x,&a[i].y);
    random_shuffle(a+1,a+n+1);
    O = a[1]; R = 0;
    for (int i = 2; i <= n; ++i)
        if (dis(a[i], O)>R+eps) 
		{
            O=a[i];R=0;
            for (int j = 1;j<i; ++j)
                if (dis(a[j],O)>R+eps) 
				{
                    O=(evol){(a[i].x + a[j].x)/2,(a[i].y + a[j].y)/2};
					R = dis(a[j], O);
                    for(int k=1;k<j;++k)
						if(dis(a[k],O)>R+eps) 
						work(a[i], a[j], a[k]);
                }
        }
    printf("%.20lf\n", R);
    return 0;
}