#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define P pair<int,int>
#define fi first
#define se second
#define rep(i,n) for(int i=0;i<n;i++)
#define INF 1000000000000000000
#define MOD 1000000007
#define all(v) v.begin(),v.end()
#define pb push_back
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int kaijo[2000010];
struct edge{int to,cost;};
int gcd(int a,int b){
    if(b==0)return a;
    return gcd(b,a%b);
}
int lcm(int a,int b){
    return a/gcd(a,b)*b;
}
bool prime(int a){
    if(a==1)return false;
    for(int i=2;i*i<=a;i++){
        if(a%i==0)return false;
    }
    return true;
}
void init_fact(){
    kaijo[0]=1;
    for(int i=1;i<=2000000;i++){
        kaijo[i]=kaijo[i-1]*i;
        kaijo[i]%=MOD;
    }
}
int modpow(int a,int b){
    if(b==0)return 1;
    if(b%2)return modpow(a,b-1)*a%MOD;
    int memo=modpow(a,b/2);
    return memo*memo%MOD;
}
int comb(int a,int b){
    if(!kaijo[0])init_fact();
    return kaijo[a]*modpow(kaijo[a-b],MOD-2)%MOD*modpow(kaijo[b],MOD-2)%MOD;
}
int inv(int x){
    x=modpow(x,MOD-2);
    return x;
}
bool kosa(double ax,double ay,double bx,double by,double cx,double cy,double dx,double dy){
    double ta=(cx-dx)*(ay-cy)+(cy-dy)*(cx-ax);
    double tb=(cx-dx)*(by-cy)+(cy-dy)*(cx-bx);
    double tc=(ax-bx)*(cy-ay)+(ay-by)*(ax-cx);
    double td=(ax-bx)*(dy-ay)+(ay-by)*(ax-dx);
    return tc*td<0&&ta*tb<0;
}
double dist(double ax,double ay,double bx,double by){
    return sqrt((bx-ax)*(bx-ax)+(ay-by)*(ay-by));
}
int n;
double x[55],y[55];
pair<pair<double,double>,double>g(double x1,double y1,double x2,double y2,double x3,double y3){
    double ox=((y2-y1)*((y3*y3-y1*y1)+(x3*x3-x1*x1))-(y3-y1)*((y2*y2-y1*y1)+(x2*x2-x1*x1)))/(2*((x3-x1)*(y2-y1)-(x2-x1)*(y3-y1)));
    double oy;
	if(y2 != y1){
		oy=(2*(x1-x2)*ox+(y2*y2-y1*y1)+(x2*x2-x1*x1))/(2*(y2-y1));
	}else{
		oy=(2*(x1-x3)*ox+(y3*y3-y1*y1)+(x3*x3-x1*x1))/(2*(y3-y1));
	}
	double r = sqrt((ox-x1)*(ox-x1)+(oy-y1)*(oy-y1));
    return {{ox,oy},r};
}
signed main(){
    cin>>n;
    rep(i,n)cin>>x[i]>>y[i];
    if(n==2){
        printf("%.12lf\n",hypot(x[0]-x[1],y[0]-y[1])/2);
        return 0;
    }
    double ans=1000000000.0;
    rep(i,n){
        rep(j,n){
            rep(k,n){
                bool ok=true;
                if(i==j||i==k||j==k)continue;
                double a,b,c;
                double ox,oy,r;
                bool don=false;
                a=hypot(x[k]-x[i],y[k]-y[i]);
                b=hypot(x[j]-x[i],y[j]-y[i]);
                c=hypot(x[k]-x[j],y[k]-y[j]);
                if(a*a+b*b<c*c){
                    ox=(x[j]+x[k])/2,oy=(y[j]+y[k])/2;
                    r=hypot(ox-x[j],oy-y[j]);
                    don=true;
                }
                a=hypot(x[k]-x[j],y[k]-y[j]);
                b=hypot(x[i]-x[j],y[i]-y[j]);
                c=hypot(x[k]-x[i],y[k]-y[i]);
                if(a*a+b*b<c*c){
                    ox=(x[i]+x[k])/2,oy=(y[i]+y[k])/2;
                    r=hypot(ox-x[i],oy-y[i]);
                    don=true;
                }
                a=hypot(x[i]-x[k],y[j]-y[k]);
                b=hypot(x[i]-x[k],y[j]-y[k]);
                c=hypot(x[i]-x[j],y[i]-y[j]);
                if(a*a+b*b<c*c){
                    ox=(x[j]+x[i])/2,oy=(y[j]+y[i])/2;
                    r=hypot(ox-x[i],oy-y[i]);
                    don=true;
                }
                if(!don){
                    pair<pair<double,double>,double> p=g(x[i],y[i],x[j],y[j],x[k],y[k]);
                    ox=p.fi.fi,oy=p.fi.se,r=p.se;
                }
                rep(l,n){
                    if(hypot(ox-x[l],oy-y[l])>r)ok=false;
                }
                if(ok)ans=min(ans,r);
            }
        }
    }
    printf("%.12lf\n",ans);
    return 0;
}

Measured memory_bytes: 256