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 CPP):

Solution:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<ctime>
#include<cstdlib>
#define ll long long
#define db double
using namespace std;
db a[110],b[110],ans,nx,ny,now;
ll n,m;
inline db ji(db x) { return x*x; }
db check(db x,db y)
{
	db ans=0;
	for(ll i=1;i<=n;++i) ans=max(ans,ji(x-a[i])+ji(y-b[i]));
	return ans;
}
void work(db x,db y,db z)
{
	nx=ny=now=0; ans=1e9;
	db a=x-z*1000,b=x+z*1000,c=y-z*1000,d=y+z*1000;
	for(db i=a;i<=b;i+=z)
	{
		for(db j=c;j<=d;j+=z)
		{
			now=check(i,j);
			if(now<ans) ans=now , nx=i ,ny=j;
		}
	}
}
int main()
{
//	freopen("test.in","r",stdin);
//	freopen("test.out","w",stdout);
	cin>>n;
	for(ll i=1;i<=n;++i) cin>>a[i] >>b[i];
	ans=1e9;
	work(0,0,1);
	work(nx,ny,1e-2);
	work(nx,ny,1e-4);
	work(nx,ny,1e-6);
	work(nx,ny,1e-8);
	printf("%.15lf",sqrt(ans));
	return 0;
}