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 <cstdio>
#include <cmath>
#include <algorithm>
#define eps (1e-12)
typedef long long ll;
inline int rd(){
    int x=0,p=1;
    char a=getchar();
    while((a<48||a>57)&&a!='-')a=getchar();
    if(a=='-')p=-p,a=getchar();
    while(a>47&&a<58)x=(x<<1)+(x<<3)+(a&15),a=getchar();
    return x*p;
}
const int N=1000002;
int n;
struct node{
	double x,y;
}a[N],O;
double R;
inline double dist(node a,node b){
	return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
inline void circle(node a,node b,node c){
	double A,B,C,D,E,F;
	A=b.y-a.y,B=c.y-a.y,C=b.x-a.x,D=c.x-a.x;
	E=b.x*b.x+b.y*b.y-a.x*a.x-a.y*a.y;
	F=c.x*c.x+c.y*c.y-a.x*a.x-a.y*a.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=dist(O,a);
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%lf %lf",&a[i].x,&a[i].y);
	std::random_shuffle(a+1,a+n+1);
	O=a[1];
	for(int i=2;i<=n;i++)
		if(dist(a[i],O)>R+eps){
			O=a[i],R=0;
			for(int j=1;j<i;j++)
				if(dist(O,a[j])>R+eps){
					O.x=(a[i].x+a[j].x)/2;
					O.y=(a[i].y+a[j].y)/2;
					R=dist(O,a[j]);
					for(int k=1;k<j;k++)
						if(dist(O,a[k])>R+eps)
							circle(a[i],a[j],a[k]);
				}
		}
//	printf("%.2lf %.2lf ",O.x,O.y);
	printf("%.12lf\n",R);
    return 0;
}