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 <bits/stdc++.h>
#define be(v) (v).begin(),(v).end()
#define pb(q) push_back(q)
typedef long long ll;
using namespace std;
const ll mod=1000000007;
#define doublecout(a) cout<<fixed<<setprecision(15)<<a<<endl;
double dis(double x,double y){
	return sqrt(x*x+y*y);
}
int main() {
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(false);
    ll n;
    cin>>n;
    ll x[n],y[n];
    for(int i=0;i<n;i++){
    	cin>>x[i]>>y[i];
    }
    double a=0,b=0;
    for(int i=0;i<n;i++){
    	a+=x[i];
    	b+=y[i];
    }
    a/=(double)n;
    b/=(double)n;
    double d=0,c=0.1,q=100000;
    while(q--){
    	int f=0;
    	d=dis(a-x[0],b-y[0]);
    	for(int i=1;i<n;i++){
    		double maki=dis(a-x[i],b-y[i]);
    		if(maki>d){
    			d=maki;
    			f=i;
    		}
    	}
    	a+=(x[f]-a)*c;
    	b+=(y[f]-b)*c;
    	c*=0.999;
    }
    doublecout(d);
    return 0;
}