//Utkarsh.25dec
#include <bits/stdc++.h>
#include <chrono>
#include <random>
#define ll long long int
#define ull unsigned long long int
#define pb push_back
#define mp make_pair
#define mod 1000000007
#define rep(i,n) for(ll i=0;i<n;i++)
#define loop(i,a,b) for(ll i=a;i<=b;i++)
#define vi vector <int>
#define vs vector <string>
#define vc vector <char>
#define vl vector <ll>
#define all(c) (c).begin(),(c).end()
#define max3(a,b,c) max(max(a,b),c)
#define min3(a,b,c) min(min(a,b),c)
using namespace std;
ll power(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll modInverse(ll a){return power(a,mod-2);}
const int N=500023;
bool vis[N];
vector <int> adj[N];
double eps=0.00000001;
double dist(pair<double,double> p1, pair<double,double> p2)
{
    double x1=p1.first;
    double y1=p1.second;
    double x2=p2.first;
    double y2=p2.second;
    
    return sqrt(pow(x1-x2,2)+pow(y1-y2,2));
}
double radius(double a,double b,double c)
{
    return (a*b*c)/(sqrt((a+b+c)*(b+c-a)*(c+a-b)*(a+b-c)));
}
bool isinside(pair<double,double> centre, double radius,pair <double,double> p)
{
    if((dist(centre,p)-radius)<eps)
        return true;
    else
        return false;
}
void solve()
{
    ll n;
    cin>>n;
    vector <pair<double,double>> v;
    rep(i,n)
    {
        double x,y;
        cin>>x>>y;
        v.pb(mp(x,y));
    }
    double ans=1e18;
    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            pair<double,double> centre=mp((v[i].first+v[j].first)/2,(v[i].second+v[j].second)/2);
            double radius1=dist(v[i],v[j])/2;
            int flag=1;
            for(int k=0;k<n;k++)
            {
                if(!isinside(centre,radius1,v[k]))
                {
                    flag=0;
                    break;
                }
            }
            if(flag)
            {
                if(ans>radius1)
                    ans=radius1;
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            for(int k=j+1;k<n;k++)
            {
                int flag=1;
                double a=dist(v[i],v[j]);
                double b=dist(v[j],v[k]);
                double c=dist(v[k],v[i]);
                if(fabs(b+c-a)<eps)
                    continue;
                if(fabs(a+c-b)<eps)
                    continue;
                if(fabs(a+b-c)<eps)
                    continue;
                double radius1=radius(a,b,c);
                double x1=v[i].first;
                double x2=v[j].first;
                double x3=v[k].first;
                double y1=v[i].second;
                double y2=v[j].second;
                double y3=v[k].second;
                double x=(x1*x1+y1*y1-x2*x2-y2*y2)*(y1-y3)-(x1*x1+y1*y1-x3*x3-y3*y3)*(y1-y2);
                x=x/(2*(x1-x2)*(y1-y3)-2*(x1-x3)*(y1-y2));
                double y=(x1-x2)*(x1*x1+y1*y1-x3*x3-y3*y3)-(x1-x3)*(x1*x1+y1*y1-x2*x2-y2*y2);
                y=y/(2*(x1-x2)*(y1-y3)-2*(x1-x3)*(y1-y2));
                pair <double,double> centre=mp(x,y);
                for(int t=0;t<n;t++)
                {
                    if(!isinside(centre,radius1,v[t]))
                    {
                        flag=0;
                        break;
                    }
                }
                if(flag==1)
                {
                    if(ans>radius1)
                        ans=radius1;
                }
            }
        }
    }
    cout<<fixed<<setprecision(20)<<ans<<'\n';
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int T=1;
    //cin>>T;
    int t=0;
    while(t++<T)
    {
        //cout<<"Case #"<<t<<":"<<' ';
        solve();
        //cout<<'\n';
    }
    cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
}

Measured memory_bytes: 12032