#include<bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define start_routine() int begtime = clock();
#define end_routine() int endtime = clock(); \
                      cerr << "\n\n" << "Time elapsed: " << \
                      (endtime - begtime)*1000/CLOCKS_PER_SEC << " ms\n\n"; \
                      return 0
#define ll long long int
#define ull unsigned long long int
#define db long double
#define ff first
#define ss second
#define MP make_pair
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define pii pair<int , int>
#define pdd pair<db , db>
#define pll pair<ll , ll>
#define vpl vector<pll >
#define spl set<pll >
#define vll vector<ll >
#define mod 1000000007
#define mod1 998244353
#define inf 1000000000000000007
#define eps 0.0000001
#define stp fixed<<setprecision(20)
#define endl '\n'
#define codejam 0
 
bool collinear(pdd p1, pdd p2, pdd p3)
{
    db d = p1.ff * (p2.ss - p3.ss) +
           p2.ff * (p3.ss - p1.ss) +
           p3.ff * (p1.ss - p2.ss);
 
    if(d) return 0;
    return 1; 
}
 
bool check(pair<db,pdd> a, pdd p)
{
    db r = a.ff, h = a.ss.ff, k = a.ss.ss;
    db x = p.ff, y = p.ss;
 
    db d = (x-h)*(x-h) + (y-k)*(y-k);
    d = sqrt(d);
 
    if(d <= r + eps) return 1;
    return 0;
}
 
pair<db,pdd> get(pdd p1, pdd p2, pdd p3 = {-inf,-inf})
{
    if(p3.ff == -inf && p3.ss == -inf)
    {
        db h = (p1.ff + p2.ff)/2;
        db k = (p1.ss + p2.ss)/2;
 
        db r = sqrt((p1.ff - p2.ff)*(p1.ff - p2.ff) + (p1.ss - p2.ss)*(p1.ss - p2.ss))/2;
 
        return {r,{h,k}};
    }
 
    db x12 = p1.ff - p2.ff;
    db x13 = p1.ff - p3.ff;
 
    db y12 = p1.ss - p2.ss;
    db y13 = p1.ss - p3.ss;
 
    db x31 = p3.ff - p1.ff;
    db x21 = p2.ff - p1.ff;
 
    db y31 = p3.ss - p1.ss;
    db y21 = p2.ss - p1.ss;  
  
    db sx13 = p1.ff*p1.ff - p3.ff*p3.ff;
    db sy13 = p1.ss*p1.ss - p3.ss*p3.ss;
 
    db sx21 = p2.ff*p2.ff - p1.ff*p1.ff;
    db sy21 = p2.ss*p2.ss - p1.ss*p1.ss;
  
    db f = ((sx13) * (x12) 
             + (sy13) * (x12) 
             + (sx21) * (x13) 
             + (sy21) * (x13)) 
            / (2 * ((y31) * (x12) - (y21) * (x13))); 
    db g = ((sx13) * (y12) 
             + (sy13) * (y12) 
             + (sx21) * (y13) 
             + (sy21) * (y13)) 
            / (2 * ((x31) * (y12) - (x21) * (y13))); 
  
    db c = -p1.ff*p1.ff - p1.ss*p1.ss - 2 * g * p1.ff - 2 * f * p1.ss; 
  
    db h = -g; 
    db k = -f; 
    db sqr_of_r = h * h + k * k - c; 
  
    db r = sqrt(sqr_of_r); 
 
    return {r,{h,k}};
}
 
void solve()
{
    ll n;cin>>n;
 
    pdd p[n];
    for(ll i=0;i<n;i++)
        cin>>p[i].ff>>p[i].ss;
 
    db ans1=inf,ans2=inf;
 
    for(ll i=0;i<n;i++)
    {
        for(ll j=i+1;j<n;j++)
        {
            for(ll k=j+1;k<n;k++)
            {
                bool ch=1;
                
                if(collinear(p[i], p[j], p[k])) continue;
                pair<db,pdd> x = get(p[i], p[j], p[k]);
 
                for(ll l=0;l<n;l++)
                    if(!check(x, p[l]))
                        ch=0;
 
                if(ch)
                    ans1 = min(ans1, x.ff);
            }
        }
    }
 
    for(ll i=0;i<n;i++)
    {
        for(ll j=0;j<n;j++)
        {
            bool ch=1;
            
            pair<db,pdd> x = get(p[i],p[j]);
 
            for(ll k=0;k<n;k++)
                if(!check(x, p[k]))
                    ch=0;
 
            if(ch)
                ans2 = min(ans2, x.ff);
        }
    }
 
    cout<<min(ans1, ans2);
}   
 
int main()
{
    fastio;
    #ifdef APNA_IO
        start_routine();
        freopen("input.txt", "rt", stdin);
        freopen("output.txt", "wt", stdout);
    #endif
 
    cout.precision(20);
 
    ll t=1;
    // cin>>t;
    for(ll i=1;i<=t;i++)
    {
        if(codejam) cout<<"Case #"<<i<<": ";
        solve();
    }
 
    #ifdef APNA_IO
        end_routine();
    #endif
}

Measured memory_bytes: 256