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
/* by Natsu Kinmoe */
#include <bits/stdc++.h>
using namespace std;

#define all(x) (x).begin(),(x).end()
#define loop(i,n) for(int i=0;i<(n);i++)
#define cont(i,n) for(int i=1;i<=(n);i++)
#define circ(i,a,b) for(int i=(a);i<=(b);i++)
#define range(i,a,b,c) for(int i=(a);((c)>0?i<=(b):i>=(b));i+=(c))
#define foreach(it,v) for(__typeof((v).begin()) it=(v).begin(),_e_D_=(v).end();it!=_e_D_;it++)
#define y0 y0O0OO00OO0OO0OO0OOO00OO0OO0O0O000OO0
#define y1 y1II11II11III11I1III11II111IIII1II1I1
#define pub push_back
#define pob pop_back
#define mak make_pair

typedef long long ll;
typedef long double lf;
const int Inf=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3fll;
/* Source code starts here */

int n;
int x[55],y[55];

lf dist(lf xs,lf ys){
	lf mx=0;
	cont(i,n)mx=max(mx,sqrtl((xs-x[i])*(xs-x[i])+(ys-y[i])*(ys-y[i])));
	return mx;
}

lf getdis(lf xs){
	lf l=0,r=1000;
	loop(i,100){
		lf m1=l+(r-l)/3,m2=l+(r-l)*2/3;
		if(dist(xs,m1)<dist(xs,m2))r=m2;
		else l=m1;
	}
	return dist(xs,l);
}

int main(){
	scanf("%d",&n);
	cont(i,n)scanf("%d%d",x+i,y+i);
	lf l=0,r=1000;
	loop(i,100){
		lf m1=l+(r-l)/3,m2=l+(r-l)*2/3;
		if(getdis(m1)<getdis(m2))r=m2;
		else l=m1;
	}
	printf("%.10Lf\n",getdis(l));
	return 0;
}