#include <bits/stdc++.h>

using namespace std;

typedef long long               ll;
typedef long double             ld;

#define min3(a, b, c)           min((a), min((b), (c)))
#define max3(a, b, c)           max((a), max((b), (c)))
#define lcm(a,b)                (a / __gcd(a,b) ) *b
#define gcd(a,b)                __gcd(a,b)
#define dist(x1,y1,x2,y2)       sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
#define distl(x1,y1,x2,y2)      sqrtl((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
#define sqr(a)                  ((a)*(a))
#define urs(r...)               typename decay<decltype(r)>::type
#define FOR(i,a,b)              for(urs(b) i=a;i<b;i++)
#define ROF(i,a,b)              for(urs(b) i=a;i>=b;i--)
#define REP(a,b)                for(urs(b) i=a;i<b;i++)
#define pb                      push_back
#define mk                      make_pair
#define ff                      first
#define ss                      second
#define lb                      lower_bound
#define ub                      upper_bound
#define all(a)                  a.begin(),a.end()
#define vi                      vector <int> 
#define pi                      pair <int, int> 
#define SORT(v)                 sort(v.begin(), v.end());
#define FASTIO                  ios_base::sync_with_stdio(0);cin.tie(NULL);
#define PI                      acos(-1.0)
const int MOD = 1e9 + 7;

ll fast_pow (ll n, ll p)
{
    ll res=1;
    while (p>0)
    {
        if (p&1)
            res = res * n;
        p = p>>1;
        n = n * n;
    }
    return res;
}

ll BMod(ll B,ll P,ll M)
{
    ll R=1;
    B=B%M;
    while(P)
    {
        if(P&1)
            R=(R*B)%M;
        P >>= 1;
        B=(B*B)%M;
    }
    return R;
}

ll invMOD(ll num,ll M)
{
    return BMod(num,M-2,M);
}

#ifdef Sieve
const int pSz = 50005;
bool np[pSz + 10]; vi prime; int prime_size;
void sieve(){np[0] = np[1] = 1;prime.pb(2);
for(ll i = 4; i <= pSz; i+=2) np[i] = 1;
for(ll i = 3; i <= pSz; i+=2){if(!np[i]){prime.pb(i);
for(ll j = i * i; j <= pSz; j += (i << 1)) np[j] = 1;}}prime_size = prime.size();}
#endif

#ifdef Combi
const int nSz = 2000006;
ll F[nSz + 1], tMod = MOD;
void Factorial(){ F[0] = 1; for(int i = 1; i <= nSz; i++) F[i] = (F[i - 1] * i) % tMod; }
inline ll nCr(int n, int r) { if(n < r) return 0; return (F[n] * invMOD((F[n - r] * F[r]) % tMod, tMod)) % tMod; }
 
#endif
 
#ifdef Z_Algo
void zAlgo(char *s, int *z){
    int L, R, sz; sz = strlen(s); z[0] = L = R = 0;
    FOR(i, 1, sz) { z[i] = 0; if(i <= R) z[i] = min(z[i - L], R - i + 1); 
    while(i + z[i] < sz && s[i + z[i]] == s[z[i]]) z[i]++; if(i + z[i] - 1 > R) L = i, R = i + z[i] - 1; }
}void zAlgo(string &s, int *z){
    int L, R, sz; sz = s.size(); z[0] = L = R = 0;
    FOR(i, 1, sz) { z[i] = 0; if(i <= R) z[i] = min(z[i - L], R - i + 1); 
    while(i + z[i] < sz && s[i + z[i]] == s[z[i]]) z[i]++; if(i + z[i] - 1 > R) L = i, R = i + z[i] - 1; }
}void zAlgo(int *s, int *z, int n){
    int L, R, sz; sz = n; z[0] = L = R = 0;
    FOR(i, 1, sz) { z[i] = 0; if(i <= R) z[i] = min(z[i - L], R - i + 1); 
    while(i + z[i] < sz && s[i + z[i]] == s[z[i]]) z[i]++; if(i + z[i] - 1 > R) L = i, R = i + z[i] - 1; }
}
#endif


//////////////////////////////////////////////////////////////////////////////
///                           M. K. BASHAR                                 ///
///                            IUT CSE'18                                  ///
//////////////////////////////////////////////////////////////////////////////

pair<ld, ld> findCircleck(ld x1, ld y1, ld x2, ld y2, ld x3, ld y3) 
{
    ld x12 = x1 - x2;
    ld x13 = x1 - x3;

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

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

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

    ld sx13 = sqr(x1) - sqr(x3);

    ld sy13 = sqr(y1) - sqr(y3);

    ld sx21 = sqr(x2) - sqr(x1);
    ld sy21 = sqr(y2) - sqr(y1);
    
    cerr << (2.0 * ((y31) * (x12) - (y21) * (x13))) <<endl;
    ld f = ((sx13) * (x12) + (sy13) * (x12) + (sx21) * (x13) + (sy21) * (x13)) / (2.0 * ((y31) * (x12) - (y21) * (x13)));
    ld g = ((sx13) * (y12) + (sy13) * (y12) + (sx21) * (y13) + (sy21) * (y13)) / (2.0 * ((x31) * (y12) - (x21) * (y13)));
    cerr <<(2.0 * ((x31) * (y12) - (x21) * (y13))) <<endl;

    //ld c = -sqr(x1) - sqr(y1) - 2.0 * g * x1 - 2.0 * f * y1;

    ld h = -g;
    ld k = -f;
    //ld sqr_of_r = h * h + k * k - c;


    //ld r = sqrt(fabs(sqr_of_r));

    return {h, k};

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

pair<ld, ld> findCircle(ld x1, ld y1, ld x2, ld y2, ld x3, ld y3) 
{
    ld x12 = x1 - x2;
    ld x13 = x1 - x3;

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

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

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

    ld sx13 = sqr(x1) - sqr(x3);

    ld sy13 = sqr(y1) - sqr(y3);

    ld sx21 = sqr(x2) - sqr(x1);
    ld sy21 = sqr(y2) - sqr(y1);
    ld f, g, p, q;

    if (x1 == x2)
        q = (y1+y2) / 2.0;
    else if (x1 == x3)
        q = (y1+y3) / 2.0;
    else
        q = (y2+y3) / 2.0;
    
    if (y1 == y2)
        p = (x1+x2) / 2.0;
    else if (y1 == y3)
        p = (x1+x3) / 2.0;
    else
        p = (x2+x3) / 2.0;  
    
    if (((2.0 * ((y31) * (x12) - (y21) * (x13)))) == 0.0)
        f = -p;
    else
        f = ((sx13) * (x12) + (sy13) * (x12) + (sx21) * (x13) + (sy21) * (x13)) / (2.0 * ((y31) * (x12) - (y21) * (x13)));

    if ((2.0 * ((x31) * (y12) - (x21) * (y13))) == 0)
        g = -q;
    else
        g = ((sx13) * (y12) + (sy13) * (y12) + (sx21) * (y13) + (sy21) * (y13)) / (2.0 * ((x31) * (y12) - (x21) * (y13)));

    //ld c = -sqr(x1) - sqr(y1) - 2.0 * g * x1 - 2.0 * f * y1;

    ld h = -g;
    ld k = -f;
    //ld sqr_of_r = h * h + k * k - c;


    //ld r = sqrt(fabs(sqr_of_r));

    return {h, k};

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

int main()
{
    FASTIO

    int t;
    cin >> t;
    vector <pair <ld, ld> > p(t);
    pair <ld, ld> ck;

    REP(0, t)
        cin >> p[i].ff >> p[i].ss;
    
    ld temp, ans2 = 10e18+7, ans3 = 10e18+7;

    FOR (i, 0, t)
    {
        FOR (j, 0, t)
        {
            FOR (k, 0, t)
            {
                if ((i==j || j==k || i==k))
                    continue;
                temp =0.0;
                if (i==0 && j == 1 && k == 9)
                        findCircleck (p[i].ff ,p[i].ss ,p[j].ff ,p[j].ss ,p[k].ff ,p[k].ss );
                ck = findCircle (p[i].ff ,p[i].ss ,p[j].ff ,p[j].ss ,p[k].ff ,p[k].ss );
                
                FOR (l, 0, t)
                {
                    temp = max(temp, distl (ck.ff, ck.ss, p[l].ff, p[l].ss));
                }
                ans3 = min(ans3, temp);
            }
        }
    }
    
    FOR (i, 0, t)
    {
        FOR (j, 0, t)
        {
            if (i==j)
                continue;
            ck = {((p[i].ff+p[j].ff)/2.0) , ((p[i].ss+p[j].ss)/2.0)};
            temp = 0.0;

            FOR (k, 0, t)
            {
                temp = max (temp , distl (ck.ff, ck.ss, p[k].ff, p[k].ss));
            }

            ans2 = min (ans2, temp);
        }
    }
    
    cerr << ans2 << "   " << ans3 <<endl;
    cout << fixed << setprecision(18) << ((t > 2)? min(ans2, ans3):ans2)  << endl;
    
    return 0;
}


Measured memory_bytes: 256