//DUEL
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#define x first
#define y second
#define pii pair<int,int>
#define pb push_back
#define eb emplace_back
#pragma GCC optimize("unroll-loops")
#define shandom_ruffle(a, b) shuffle(a, b, rng)
#define vi vector<int>
#define vl vector<ll>
#define popcnt __builtin_popcount
#define popcntll __builtin_popcountll

using namespace std;
using namespace __gnu_pbds;

using ll=long long;
using ull=unsigned long long;
using ld=long double;
int MOD=1000000007;
int MOD2=998244353;
vector<int> bases;
const ll LLINF=1ll<<60;
const char en='\n';

mt19937 rng(0);
void yes() {cout<<"YES"<<en; exit(0);}
void no() {cout<<"NO"<<en; exit(0);}
inline int rund() {int x576363482791fuweh=rng();return abs(x576363482791fuweh)%RAND_MAX;}
template<class T>
void prVec(vector<T> w,bool fl=false)
{
	cout<<w.size()<<en;
	for (int i=0;i<int(w.size())-1;++i) cout<<w[i]<<' ';
	if (w.size()) cout<<w[w.size()-1]<<en;
	if (fl) cout<<flush;
}

void M998()
{
	swap(MOD,MOD2);
}

ll raand()
{
	ll a=rund();
	a*=RAND_MAX;
	a+=rund();
    return a;
}

#define rand raand

ll raaand()
{
	return raand()*(MOD-7)+raand();
}

string to_upper(string a)
{
	for (int i=0;i<(int)a.size();++i) if (a[i]>='a' && a[i]<='z') a[i]-='a'-'A';
	return a;
}

string to_lower(string a)
{
	for (int i=0;i<(int)a.size();++i) if (a[i]>='A' && a[i]<='Z') a[i]+='a'-'A';
	return a;
}

ll sti(string a,int base=10)
{
	ll k=0;
	for (int i=0;i<(int)a.size();++i)
	{
		k*=base;
		k+=a[i]-'0';
	}
	return k;
}

template<class T>
void eras(vector<T>& a,T b)
{
	a.erase(find(a.begin(),a.end(),b));
}

string its(ll k,int base=10)
{
	if (k==0) return "0";
	string a;
	while (k)
	{
		a.push_back((k%base)+'0');
		k/=base;
	}
	reverse(a.begin(),a.end());
	return a;
}

ll min(ll a,int b)
{
	if (a<b) return a;
	return b;
}

ll min(int a,ll b)
{
	if (a<b) return a;
	return b;
}

ll max(ll a,int b)
{
	if (a>b) return a;
	return b;
}

ll max(int a,ll b)
{
	if (a>b) return a;
	return b;
}

ll gcd(ll a,ll b)
{
	if (b==0) return a;
	return gcd(b,a%b);
}

ll lcm(ll a,ll b)
{
	return a/gcd(a,b)*b;
}

template<class T,class K>
pair<T,K> mp(T a,K b)
{
	return make_pair(a,b);
}

inline int mult(ll a,ll b)
{
	return (a*b)%MOD;
}

inline int pot(int n,int k)
{
	if (k==0) return 1;
	ll a=pot(n,k/2);
	a=mult(a,a);
	if (k%2) return mult(a,n);
	else return a;
}

int divide(int a,int b)
{
	return mult(a,pot(b,MOD-2));
}

inline int sub(int a,int b)
{
	if (a-b>=0) return a-b;
	return a-b+MOD;
}

inline int add(int a,int b)
{
	if (a+b>=MOD) return a+b-MOD;
	return a+b;
}

bool prime(ll a)
{
	if (a==1) return 0;
	for (int i=2;i<=round(sqrt(a));++i)
	{
		if (a%i==0) return 0;
	}
	return 1;
}

const int N=300010;
int n;
using po=pair<ld,ld>;
using cir=pair<po,ld>;
po h[N];

ld dis(po a,po b)
{
	return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}

cir ra(po x,po y,po z)
{
	ld a=x.x,b=x.y,c=y.x,d=y.y,e=z.x,f=z.y;
	ld naz=-a*d+a*f+b*c-b*e-c*f+d*e;
	naz*=2;
	if (abs(naz)<1e-8) return {{MOD,MOD},MOD};
	if (abs(b-f)<1e-8)
	{
		if (abs(d-f)<1e-8) return {{MOD,MOD},MOD};
		ld x1=(a+e)/2,y1=(-a*c+a*e+c*c-c*e+d*d-f*f)/(2*(d-f));
		return {{x1,y1},dis({x1,y1},x)};
	}
	ld br2=-(-a*a*c+a*a*e+a*c*c+a*d*d-a*e*e-a*f*f-b*b*c+b*b*e-c*c*e+c*e*e+c*f*f-d*d*e);
	ld br1=-d*a*a+a*a*f-b*b*d+b*b*f+b*c*c+b*d*d-b*e*e-b*f*f-c*c*f-d*d*f+d*e*e+d*f*f;
	ld x1=br1/naz,y1=br2/naz;
	ld di=sqrt((a-x1)*(a-x1)+(b-y1)*(b-y1));
	return {{x1,y1},di};
}

bool in(po a,cir b)
{
	return dis(a,b.x)<=b.y+1e-8;
}

ld pi=acos(0)*2;

void rot(po&a,ld an)
{
	ld dis=sqrt(a.x*a.x+a.y*a.y);
	ld u=atan2(a.y,a.x);
	u+=an;
	if (u>=2*pi) u-=2*pi;
	a.x=cos(u)*dis;
	a.y=sin(u)*dis;
}

bool ok(cir a)
{
	for (int i=0;i<n;++i) if (!in(h[i],a)) return 0;
	return 1;
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	for (int i=0;i<10;++i) bases.push_back(rand()%(MOD-13893829*2)+13893829);
	cin>>n;
	ld am=rand()/1./INT_MAX;
	//cout<<am<<endl;
	for (int i=0;i<n;++i) cin>>h[i].x>>h[i].y,rot(h[i],am);
	//for (int i=0;i<n;++i) cout<<h[i].x<<' '<<h[i].y<<en;
	ld mi=MOD;
	for (int i=0;i<n;++i) for (int j=i+1;j<n;++j)
	{
		po sr={(h[i].x+h[j].x)/2,(h[i].y+h[j].y)/2};
		ld di=dis(h[i],h[j])/2;
		cir res={sr,di};
		if (ok(res)) mi=min(mi,di);
	}
	for (int i=0;i<n;++i) for (int j=i+1;j<n;++j) for (int k=j+1;k<n;++k)
	{
		cir res=ra(h[i],h[j],h[k]);
		//cout<<i<<' '<<j<<' '<<k<<' '<<res.x.x<<' '<<res.x.y<<' '<<res.y<<en;
		if (ok(res)) mi=min(mi,res.y);
	}
	cout<<fixed<<setprecision(10)<<mi;
}





Measured memory_bytes: 512