#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using vin=vector<int>;
using vll=vector<long long>;
using vvin=vector<vector<int>>;
using vvll=vector<vector<long long>>;
using vstr=vector<string>;
using vvstr=vector<vector<string>>;
using vch=vector<char>;
using vvch=vector<vector<char>>;
using vbo=vector<bool>;
using vvbo=vector<vector<bool>>;
using vpii=vector<pair<int,int>>;
using pqsin=priority_queue<int,vector<int>,greater<int>>;
#define mp make_pair
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rep2(i,s,n) for(int i=(s);i<(int)(n);i++)
#define all(v) v.begin(),v.end()
#define decp(n) cout<<fixed<<setprecision((int)n)
const ll inf=1e9+7;
const ll INF=1e18;
const ll mod=998244353;

const double eps=1e-10;

struct vec2{
    double x;
    double y;
    
    vec2()=default;
    vec2(double x_,double y_){
        x=x_;
        y=y_;
    }

    double length() const{//長さ
        return sqrt(x*x+y*y);
    }
    constexpr double lengthsquare() const{//長さの二乗
        return x*x+y*y;
    }
    constexpr double dot(const vec2& other) const{//内積
        return x*other.x+y*other.y;
    }
    constexpr double cross(const vec2& other) const{//外積
        return x*other.y-y*other.x;
    }
    double distancefrom(const vec2& other) const{//otherとの距離
        return (other-*this).length();
    }
    vec2 unitvector() const{//単位ベクトル
        return *this/length();
    }
    vec2 normalunitvector() const{//単位法線ベクトル
        return{-unitvector().y,unitvector().x};
    }
    vec2 rotation(double arg) const{//(0,0)を中心にarg回転
        double cs=cos(arg);double sn=sin(arg);
        return {x*cs-y*sn,x*sn+y*cs};
    }
    double angle() const{//(0,0)を中心としたときの偏角
        return atan2(y,x);
    }
    constexpr bool iszero() const{//原点と一致するか
        return x==0.0 && y==0.0;
    }
    
    vec2 operator+() const{
        return *this;
    }
    vec2 operator-() const{
        return {-x,-y};
    }
    vec2 operator+(const vec2& other) const{
        return {x+other.x,y+other.y};
    }
    vec2 operator-(const vec2& other) const{
        return {x-other.x,y-other.y};
    }
    vec2 operator*(double c) const{
        return {c*x,c*y};
    }
    vec2 operator/(double c) const{
        return {x/c,y/c};
    }
    vec2& operator+=(const vec2& other){
        x+=other.x;
        y+=other.y;
        return *this;
    }
    vec2& operator-=(const vec2& other){
        x-=other.x;
        y-=other.y;
        return *this;
    }
    vec2& operator*=(double c){
        x*=c;
        y*=c;
        return *this;
    }
    vec2& operator/=(double c){
        x/=c;
        y/=c;
        return *this;
    }
};

int sgn(const double a){
    return(a<-eps?-1:(a>eps?1:0));
}

inline vec2 operator*(double s,const vec2& v){
    return {s*v.x,s*v.y};
}
inline bool operator<(const vec2& a, const vec2& b){
    if(sgn(a.x-b.x)!=0)return sgn(a.x-b.x)<0;
    else return sgn(a.y-b.y)<0;
}
int isp(const vec2& a,const vec2& b,const vec2& c){
    //三点A,B,Cの位置関係を示す。全部異なっていることが前提条件。
    //ABから見てBCが左に曲がるなら1, 右に曲がるなら-1
    //ABC(CBA)の順で一直線上に並ぶなら2, ACB(BCA)の順なら0, BAC(CAB)の順なら-2

    int tmp=sgn((b-a).cross(c-a));
    if(tmp==1)return 1;
    else if(tmp==-1)return -1;
    else{
        if(sgn((b-a).dot(c-b))>0)return 2;
        else if(sgn((a-b).dot(c-a))>0)return -2;
        else return 0;
    }
}
int angletype(const vec2& a,const vec2& b,const vec2& c){//1:鋭角,2:直角,3:鈍角
    auto tmp=(a-b).dot(c-b);
    if(sgn(tmp)>0)return 0;
    else if(sgn(tmp)==0)return 1;
    else return 2;
}

int main(){
    decp(10);
    int n;cin>>n;
    vector<vec2> p(n);
    rep(i,n)cin>>p[i].x>>p[i].y;
    double l=0.0,r=710.0,m,tmp;bool can;vec2 center;
    rep(i,100){
        m=(l+r)/2.0;
        can=false;
        //p[j],p[k]を含む半径mの円に全部含まれるか
        rep(j,n){
            rep2(k,j+1,n){
                tmp=p[j].distancefrom(p[k]);
                if(sgn(2.0*m-tmp)==-1)continue;
                center.x=(p[j].x+p[k].x)/2.0+(sqrt(m*m-tmp*tmp/4.0)/tmp)*(p[k].y-p[j].y);
                center.y=(p[j].y+p[k].y)/2.0-(sqrt(m*m-tmp*tmp/4.0)/tmp)*(p[k].x-p[j].x);
                //if(i==0&&j==0&&k==1)cout<<(p[j].x+p[k].x)/2.0<<" "<<sqrt(m*m-tmp*tmp/4.0)<<" "<<(p[k].y-p[j].y)<<" "<<center.x<<endl;
                can=true;
                rep(h,n){
                    //if(h==j||h==k)continue;
                    if(sgn(m-center.distancefrom(p[h]))==-1){
                        //if(i==0&&j==0&&k==1&&h==0)cout<<center.x<<" "<<center.y<<" "<<center.distancefrom(p[h])<<endl;
                        can=false;
                        break;
                    }
                }
                if(can)break;
                center.x=(p[j].x+p[k].x)/2.0-(sqrt(m*m-tmp*tmp/4.0)/tmp)*(p[k].y-p[j].y);
                center.y=(p[j].y+p[k].y)/2.0+(sqrt(m*m-tmp*tmp/4.0)/tmp)*(p[k].x-p[j].x);
                can=true;
                rep(h,n){
                    //if(h==j||h==k)continue;
                    if(sgn(m-center.distancefrom(p[h]))==-1){
                        can=false;
                        break;
                    }
                }
            }
            if(can)break;
        }
        if(can)r=m;
        else l=m;
    }
    cout<<r<<endl;
}

Measured memory_bytes: 3844