#include <bits/stdc++.h>

using namespace std;

#define N 64
#define Epsilon 0.00000001
#define inf 100000000.0

long double ans, curr;
pair <long double, long double> v[N];
pair <long double, long double> C, P, Center;
int i, j, n, it, jt;

long double dist (pair <long double, long double> A,pair <long double, long double>B){
    long double d = sqrt((A.first - B.first) * (A.first - B.first) + (A.second - B.second) * (A.second - B.second));
    return d;
}

bool area (pair <long double, long double> A,
           pair <long double, long double> B,
           pair <long double, long double> C){
    double S = A.first * B. second + B.first * C.second + C.first * A.second -
    B.second * C.first - A.second * B.first - C.second * A.first;
    return S / 2.0;
}

pair <long double, long double> circle_center (pair <long double, long double> A,
                                               pair <long double, long double> B,
                                               pair <long double, long double> C){
    pair<long double, long double> res;
    if (area(A, B, C) < Epsilon){
        long double a = dist(C, B), b = dist(A, C), c = dist(A, B);
        long double M = max(a, max(b, c));
        if (M == a){
            res.first = (C.first + B.first) / 2.0;
            res.second = (C.second + B.second) / 2.0;
            return res;
        }
        if (M == b){
            res.first = (C.first + A.first) / 2.0;
            res.second = (C.second + A.second) / 2.0;
            return res;
        }
        res.first = (A.first + B.first) / 2.0;
        res.second = (A.second + B.second) / 2.0;
        return res;
    }
    long double d = 2.0 * (A.first * (B.second - C.second) + B.first * (C.second - A.second) + C.first * (A.second - B.second));
    res.first = (A.first * A.first + A.second * A.second) * (B.second - C.second) +
                (B.first * B.first + B.second * B.second) * (C.second - A.second) +
                (C.first * C.first + C.second * C.second) * (A.second - B.second);
    res.first /= d;

    res.second = (A.first * A.first + A.second * A.second) * (C.first - B.first) +
                (B.first * B.first + B.second * B.second) * (A.first - C.first) +
                (C.first * C.first + C.second * C.second) * (B.first - A.first);
    res.second /= d;
    return res;
}

bool check_center (pair <long double, long double> M, long double R){
    for (int itt = 0; itt < n; ++itt)
        if (dist(M, v[itt]) > R)
        return 0;
    return 1;
}
int main()
{
    cin >> n;
    for (i = 0; i < n; ++i){
        cin >> v[i].first >> v[i].second;
        C.first += v[i].first;
        C.second += v[i].second;
    }
    ans = inf;
    for (i = 0; i < n; ++i)
    for (j = 0; j < n; ++j){
        curr = dist(v[i], v[j]);
        P.first = (v[i].first + v[j].first) / 2.0;
        P.second = (v[i].second + v[j].second) / 2.0;
        if (curr < ans && check_center(P, curr / 2))
            ans = curr;
    }
    C.first /= n;
    C.second /= n;
    for (i = 0; i < n; ++i){
        curr = dist(v[i], C);
        P.first = (v[i].first + C.first) / 2.0;
        P.second = (v[i].second + C.second) / 2.0;
        if (curr < ans && check_center(P, curr / 2))
            ans = curr;
    }
  	for (i = 0; i < n; ++i)
      for (j = i + 1; j < n; ++j)
        for (it = j + 1; it < n; ++it){
          	curr = 0;
        	P = circle_center(v[i], v[j], v[it]);
        	for (jt = 0; jt < n; ++jt){
            	curr = max(curr, dist(P, v[jt]));
            }
          	ans = min(curr * 2.0, ans);
        }
    cout << fixed << setprecision(7) << ans / 2.0;
    return 0;
}


Measured memory_bytes: 384