#include <bits/stdc++.h>
#define mk make_pair
#define fs first
#define sc second
using namespace std;
typedef long long ll;
typedef long double ld;
int a[100010], b[100010], n;
ld r;


//bool findCircle(int x1, int y1, int x2, int y2, int x3, int y3) {
//    int x12 = x1 - x2;
//    int x13 = x1 - x3;
//
//    int y12 = y1 - y2;
//    int y13 = y1 - y3;
//
//    int y31 = y3 - y1;
//    int y21 = y2 - y1;
//
//    int x31 = x3 - x1;
//    int x21 = x2 - x1;
//
//    long double A = x1(y23)-y1*()
//}

bool findCircle(int x1, int y1, int x2, int y2, int x3, int y3)
{
    int x12 = x1 - x2;
    int x13 = x1 - x3;

    int y12 = y1 - y2;
    int y13 = y1 - y3;

    int y31 = y3 - y1;
    int y21 = y2 - y1;

    int x31 = x3 - x1;
    int x21 = x2 - x1;

    // x1^2 - x3^2
    long double sx13 = pow(x1, 2) - pow(x3, 2);

    // y1^2 - y3^2
    long double sy13 = pow(y1, 2) - pow(y3, 2);

    long double sx21 = pow(x2, 2) - pow(x1, 2);
    long double sy21 = pow(y2, 2) - pow(y1, 2);

    long double f = ((sx13) * (x12)
             + (sy13) * (x12)
             + (sx21) * (x13)
             + (sy21) * (x13))
            / (2 * ((y31) * (x12) - (y21) * (x13)));
    long double g = ((sx13) * (y12)
             + (sy13) * (y12)
             + (sx21) * (y13)
             + (sy21) * (y13))
            / (2 * ((x31) * (y12) - (x21) * (y13)));

    long double c = -pow(x1, 2) - pow(y1, 2) - 2 * g * x1 - 2 * f * y1;

    // eqn of circle be x^2 + y^2 + 2*g*x + 2*f*y + c = 0
    // where centre is (h = -g, k = -f) and radius r
    // as r^2 = h^2 + k^2 - c
    long double h = -g;
    long double k = -f;
    long double sqr_of_r = h * h + k * k - c;

    // r is the radius
    r = sqrt(sqr_of_r);

//    cout << "Centre = (" << h << ", " << k << ")" << endl;
//    cout << "Radius = " << r;

    for(int i=0; i<n; ++i){
        if(a[i]==x1 && b[i]==y1)
            continue;
        if(a[i]==x2 && b[i]==y2)
            continue;
        if(a[i]==x3 && b[i]==y3)
            continue;
        if((a[i]-h)*(a[i]-h)+(b[i]-k)*(b[i]-k) > r*r+1e-9)
            return 0;
    }
    return 1;
}
ld H, K;
bool chck(){
    for(int i=0; i<n; ++i){
        if((a[i]-H)*(a[i]-H)+(b[i]-K)*(b[i]-K) > r*r+1e-9)
            return 0;
    }
    return 1;
}
int main(){
    while(cin>>n){
        cout<<fixed<<setprecision(9);
        for(int i=0; i<n; ++i){
            scanf("%d%d",a+i,b+i);
        }
        if(n==2){
            cout<<hypot(a[0]-a[1], b[0]-b[1])/2.0<<endl;
            continue;
        }
        ld ans=1e9;
        for(int i=0; i<n; ++i){
            for(int j=i+1; j<n;  ++j){
                H=(a[i]+a[j])/2.0;
                K=(b[i]+b[j])/2.0;
                r=hypot(a[i]-a[j], b[i]-b[j])/2.0;
                if(chck()){
                    ans=min(ans, r);
                }
                for(int k=j+1; k<n; ++k){
                    int tmp1=b[j]-b[i], tmp2=a[j]-a[i];
                    int tmp3=b[k]-b[i], tmp4=a[k]-a[i];
                    if(tmp1*tmp4==tmp3*tmp2){
                        vector<pair<ld, pair<ld, ld> >> v;
                        v.push_back(mk(hypot(a[i]-a[j],b[i]-b[j])/2.0, mk((a[i]+a[j])/2.0 , (b[i]+b[j])/2.0)));
                        v.push_back(mk(hypot(a[i]-a[k],b[i]-b[k])/2.0, mk((a[i]+a[k])/2.0 , (b[i]+b[k])/2.0)));
                        v.push_back(mk(hypot(a[k]-a[j],b[k]-b[j])/2.0, mk((a[k]+a[j])/2.0 , (b[k]+b[j])/2.0)));
                        sort(v.begin(), v.end());
                        r=v.back().fs;
                        H=v.back().sc.fs;
                        K=v.back().sc.sc;
                        if(chck())
                            ans=min(r, ans);
                        continue;
                    }
                    if(findCircle(a[i],b[i],a[j],b[j],a[k],b[k])){
                        ans=min(ans, r);
                    }
                }
            }
        }
        cout<<ans<<endl;
    }
  return 0;
}




Measured memory_bytes: 256