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 rep(i,n) for (double i = 0; i < n; ++i)
using namespace std;
typedef long long ll;
typedef pair<double,double> P;
const int INF=1001001001;


vector<P> v;
double dist(double x1,double y1,double x2,double y2){
  double r=0;
  double x=abs(x1-x2);
  double y=abs(y1-y2);
  r=sqrt(x*x+y*y);
  return r;
}

double D(double x,double y){
  double r=0;
  rep(i,v.size()){
    r=max(r,dist(x,y,v[i].first,v[i].second));
   //cout<<r<<endl;
  }
  return r;
}

double g(double x){
  double l=0;
  double r=1500;
  rep(i,80){
    double c1=(2*l+r)/3;
    double c2=(l+2*r)/3;
    double d1=D(x,c1);
    double d2=D(x,c2);
  //  cout<<d1<<' '<<d2<<endl;
    if (d1>d2)l=c1;
    else r=c2;
  }
  return D(x,l);
}


int main(){
  double n;
  cin>>n;
  rep(i,n){
    double x1,y1;
    cin>>x1>>y1;
    P p=make_pair(x1,y1);
    v.push_back(p);

  }
//  cout<<D(1,2);
  double l=0;
  double r=1500;

  rep(i,80){
    double c1=(2*l+r)/3;
    double c2=(l+2*r)/3;
    double d1=g(c1);
    double d2=g(c2);
  //  cout<<d1<<' '<<d2<<endl;
    if (d1>d2)l=c1;
    else r=c2;
  }

  cout<<setprecision(10)<<g(l);

}