#include <bits/stdc++.h>
using namespace std;

template<typename T>
istream& operator >> (istream& istr, vector<T>& vec){
    for(T& x: vec) istr >> x;
    return istr;
}

template<typename T>
ostream& operator << (ostream& ostr, vector<T>& vec){
    if(!vec.empty()){
        ostr << vec.front();
        for(auto itr = ++vec.begin(); itr != vec.end(); itr++)
            ostr << " " << *itr;
    }
    return ostr;
}

template<typename T>
ostream& operator << (ostream& ostr, vector<vector<T>>& mat){
    if(!mat.empty()){
        ostr << mat.front();
        for(auto itr = ++mat.begin(); itr != mat.end(); itr++)
            ostr << endl << *itr;
    }
    return ostr;
}

template<typename T, typename U>
ostream& operator << (ostream& ostr, pair<T,U>& p){
    ostr << p.first << " " << p.second;
    return ostr;
}

template<typename T, typename U>
ostream& operator << (ostream& ostr, vector<pair<T,U>>& mat){
    if(!mat.empty()){
        ostr << mat.front();
        for(auto itr = ++mat.begin(); itr != mat.end(); itr++)
            ostr << endl << *itr;
    }
    return ostr;
}

typedef long long ll;
typedef vector<ll> vll;
typedef vector<char> vc;
// vll x(n); x[i]=a;
typedef vector<vector<ll>> vvll;
typedef vector<vector<char>> vvc;
// vvll x(m,vi(n)); x[i][j]=a;
typedef pair<ll,ll> pll;
typedef pair<double,double> pd;
typedef vector<pair<ll,ll>> vpll;
// vpll x(n); x[i]={a,b}; x[i].first/second;

#define PI 3.1415926535897932
#define EPS 1e-12
#define INF (ll)1e+12
#define REP(i,n) for(ll i=0; i<(n); i++)
#define RREP(i,n) for(ll i=(n)-1; i>=0; i--)
#define FOR(i,a,b) for(ll i=(a); i<(b); i++)
#define FORR(i,a,b) for(ll i=(b)-1; i>=(a); i--)
#define dump(x) cout << #x << " = " << (x) << endl
#define all(x) (x).begin(),(x).end()
// sort(all(x));

template<typename T, typename U>
double dist2d(pair<T,T> p1, pair<U,U> p2){
    double xd = (double)p1.first - (double)p2.first;
    double yd = (double)p1.second - (double)p2.second;
    return sqrt(xd*xd+yd*yd);
}

template<typename T, typename U, typename V>
pd circumcenter(pair<T,T> p1, pair<U,U>p2, pair<V,V> p3){
    double x1 = p1.first; double y1 = p1.second;
    double x2 = p2.first; double y2 = p2.second;
    double x3 = p3.first; double y3 = p3.second;

    double dc = 2*x1*(y2-y3) + 2*x2*(y3-y1) + 2*x3*(y1-y2);
    double xc = ((x1*x1+y1*y1)*(y2-y3)+(x2*x2+y2*y2)*(y3-y1)+(x3*x3+y3*y3)*(y1-y2))/dc;
    double yc = ((x1*x1+y1*y1)*(x3-x2)+(x2*x2+y2*y2)*(x1-x3)+(x3*x3+y3*y3)*(x2-x1))/dc;
    return {xc, yc};
}

int main(){
    ll n = 0;
    cin >> n;
    vpll p(n);
    REP(i,n) cin >> p[i].first >> p[i].second;

    double xr, yr, r, cnt, ans=INF;
    REP(i,n-1){
        REP(j,n-1){
            xr = (p[i].first  + p[j+1].first ) / 2.0;
            yr = (p[i].second + p[j+1].second) / 2.0;
            pd xo = {xr, yr};
            r = dist2d(p[i], xo);

            cnt = 0;
            REP(l,n){
                if(dist2d(p[l], xo) > r) break;
                cnt++;
            }
            if(cnt < n) continue;
            if(r < ans) ans = r;
        }
    }

    REP(i,n-2){
        REP(j,n-2){
            REP(k,n-2){
                pd xo = circumcenter(p[i], p[j+1], p[k+2]);
                r = dist2d(p[i], xo);
                // if(isinf(r)) continue;
                // cout << xo << endl;

                cnt = 0;
                REP(l,n){
                    if(dist2d(p[l], xo) > r) break;
                    cnt++;
                }
                if(cnt < n) continue;
                if(r < ans) ans = r;
            }

        }
    }
    cout << fixed << setprecision(12) << ans << endl;
    return 0;
}


Measured memory_bytes: 256