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<cstring>
#include<algorithm>
#include<cmath>
#define maxn 510
using namespace std;
const double eps=1e-10;
int n; 
struct Poi{
	double x,y;
}a[maxn];
double dist(Poi p1,Poi p2)
{
	return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
Poi o;
double r;
void cir(Poi p1,Poi p2,Poi p3)
{
	double a=2*(p2.x-p1.x),b=2*(p2.y-p1.y);
	double c=p2.x*p2.x+p2.y*p2.y-p1.x*p1.x-p1.y*p1.y;
	double d=2*(p3.x-p1.x),e=2*(p3.y-p1.y);
	double f=p3.x*p3.x+p3.y*p3.y-p1.x*p1.x-p1.y*p1.y;
	o.x=(b*f-e*c)/(b*d-e*a);
	o.y=(d*c-a*f)/(b*d-e*a);
	r=dist(o,p1);
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)   scanf("%lf%lf",&a[i].x,&a[i].y);
	o=a[1];
	r=0;
	for(int i=2;i<=n;i++)
	{
		if(dist(o,a[i])>r+eps)
		{
			o=a[i];r=0;
			for(int j=1;j<=i-1;j++)
			{
				if(dist(o,a[j])>r+eps)
				{
					o.x=(a[i].x+a[j].x)/(double)2;
					o.y=(a[i].y+a[j].y)/(double)2;
					r=dist(o,a[i]);
					for(int k=1;k<=j-1;k++)
					{
						if(dist(o,a[k])>r+eps)  cir(a[i],a[j],a[k]);
					}
				}
			}
		}
	}
	printf("%.7lf\n",r);
	return 0;
}