#define ll double
#define pub push_back
#define pob pop_back
#define puf push_front
#define pof pop_front
#define mp make_pair
#define fo(i , n) for(ll i = 0 ; i < n ; i++)
#include<iomanip>
#include<cmath>
#include<cstdio>
#include<utility>
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<stack>
ll z = 1000000007 ;
/*ll gcd(ll a , ll b){ if(b > a) return gcd(b , a) ; if(b == 0) return a ; return gcd(b , a%b) ;}
ll power(ll a ,ll b){if(b == 0) return 1 ; ll c = power(a , b/2) ; if(b%2 == 0) return ((c*c)%z) ; else return ((((c*c)%z)*a)%z) ;}
ll inverse(ll a ,ll n){return power(a , n-2) ;}
ll max(ll a , ll b){if(a > b) return a ; return b ;}*/
//ios_base::sync_with_stdio(0);
//cin.tie(0); cout.tie(0);
using namespace std ;

vector<pair<ll ,ll> > p ;
int n ;

double check(double x , double y , double r)
{
	fo(i , n)
	{
		double x1 = p[i].first , y1 = p[i].second ;
		double dist = (((x-x1)*(x-x1)) + ((y-y1)*(y-y1))) ;
		dist -= r ;
		if(dist > 0 && fabs(dist) > 0.00001)
		    return 1000000 ;
	}
	return r ;
}

double check_2(pair<ll ,ll> p1 , pair<ll , ll> p2)
{
	ll x1 = p1.first , x2 = p2.first , y1 = p1.second , y2 = p2.second ;
	double x , y , r ;
	x = (x1 + x2)/2 ;
	y = (y1 + y2)/2 ;
	r = (((x-x1)*(x-x1)) + ((y-y1)*(y-y1))) ; // this is r square
	//cout << x << ' ' << y << ' ' << r << endl ;
	return check(x , y , r) ;
	
}

double check_3(pair<ll , ll> p1 , pair<ll , ll> p2 , pair<ll , ll> p3)
{
	double xi , yi ;
	{
		ll x[3] , y[3] ;
		x[0] = p1.first ;
		x[1] = p2.first ;
		x[2] = p3.first ;
		y[0] = p1.second ;
		y[1] = p2.second ;
		y[2] = p3.second ;
	    
	   
		double den = 1 ;
		yi = ((x[1] - x[2])*(x[1] - x[0])*(x[2]-x[0])) + (((y[1]*y[1]) - (y[0]*y[0]))*(x[2] - x[0])) - (((y[2]*y[2]) - (y[0]*y[0]))*(x[1] - x[0])) ;
		//cout << "yi = " << yi << endl ;
		if(fabs(yi) > 0.0001)
		{
			den = ((y[1] - y[0])*(x[2] - x[0])) - ((y[2] - y[0])*(x[1] - x[0])) ;
			/*if(fabs(den) < 0.0001)
			    cout << x[0] << ' ' << y[0] << '\n' << x[1] << ' ' << y[1] << '\n' << x[2] << ' ' << y[2] << endl, 
			cout << "den = " << den << endl ;*/
		}
		//cout << "den  = " << den << endl ;
		if(fabs(den) < 0.00001)
		    return 100000000 ;
		yi /= den ;
		yi /= 2 ;
	   
	}
	{
		ll x[3] , y[3] ;
		y[0] = p1.first ;
		y[1] = p2.first ;
		y[2] = p3.first ;
		x[0] = p1.second ;
		x[1] = p2.second ;
		x[2] = p3.second ;
	    
	   
		double den = 1 ;
		xi = ((x[1] - x[2])*(x[1] - x[0])*(x[2]-x[0])) + (((y[1]*y[1]) - (y[0]*y[0]))*(x[2] - x[0])) - (((y[2]*y[2]) - (y[0]*y[0]))*(x[1] - x[0])) ;
		//cout << " xi = " << xi << endl ;
		if(fabs(xi) > 0.0001)
		{
			den = ((y[1] - y[0])*(x[2] - x[0])) - ((y[2] - y[0])*(x[1] - x[0])) ;
			/*if(fabs(den) < 0.0001)
			    cout << y[0] << ' ' << x[0] << '\n' << y[1] << ' ' << x[1] << '\n' << y[2] << ' ' << x[2] << '\n' ,
			cout << "den = " << den << endl ;*/
		}
		if(fabs(den) < 0.00001)
		    return 1000000000 ;
		xi /= den ;
		xi /= 2 ;
	   
	}
	//cout << "xi = " << xi << endl ;
	ll x1 = p1.first , y1 = p1.second ;
	double r = (((xi - x1)*(xi - x1)) + ((yi - y1)*(yi - y1))) ;
//	cout << xi << ' ' << yi << ' ' << r << endl ; 
	return check(xi , yi , r) ;
	
}

int main()
{
	
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	
	
	cin >> n ;

	fo(i , n)
	{
		ll u , v ;
		cin >> u >> v ;
		p.pub(mp(u , v)) ;
	}
	
	double ans = 100000000 ;
	fo(i , n)
	{
		for(ll j = i+1 ; j < n ; j++)
		{
		    //cout << "ii" << ' ' << check_2(p[i] , p[j]) << endl ;
			ans = min(check_2(p[i] , p[j]) , ans) ;
		}
	}
	//cout << ans << endl ;
	if(n > 2)
	{
		fo(i , n)
		{
			for(ll j = i+1 ; j < n ; j++)
			{
				for(ll k = j+1 ; k < n ; k++)
				{
				    //cout << "aaa" << endl ;
					ans = min(check_3(p[i] , p[j] , p[k]) , ans);
					//cout << ans << endl ;
				}
			}
		}
	}
	//cout << ans << endl ;
	cout << fixed << setprecision(10) <<  sqrt(ans) << endl ;
	return 0;
}

Measured memory_bytes: 256