#include <bits/stdc++.h>
using namespace std;
struct Point {
double x, y;
};
double distance(Point a, Point b) {
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
Point midPoint(Point a, Point b) {
return {(a.x + b.x) / 2, (a.y + b.y) / 2};
}
pair<Point, double> smallestEnclosingCircle(vector<Point>& points) {
int n = points.size();
Point center = points[0];
double radius = 0.0;
for (int i = 0; i < n; ++i) {
if (distance(center, points[i]) > radius) {
center = points[i];
radius = 0.0;
for (int j = 0; j < i; ++j) {
if (distance(center, points[j]) > radius) {
center = midPoint(points[i], points[j]);
radius = distance(center, points[j]);
for (int k = 0; k < j; ++k) {
if (distance(center, points[k]) > radius) {
double dx1 = points[j].x - points[i].x;
double dy1 = points[j].y - points[i].y;
double dx2 = points[k].x - points[i].x;
double dy2 = points[k].y - points[i].y;
double cross = dx1 * dy2 - dy1 * dx2;
double c1 = (dx1 * (points[i].x + points[j].x) + dy1 * (points[i].y + points[j].y)) / 2;
double c2 = (dx2 * (points[i].x + points[k].x) + dy2 * (points[i].y + points[k].y)) / 2;
center.x = (dy2 * c1 - dy1 * c2) / cross;
center.y = (dx1 * c2 - dx2 * c1) / cross;
radius = distance(center, points[k]);
}
}
}
}
}
}
return {center, radius};
}
int main() {
int n;
cin >> n;
vector<Point> points(n);
for (int i = 0; i < n; ++i) {
cin >> points[i].x >> points[i].y;
}
pair<Point, double> result = smallestEnclosingCircle(points);
cout << fixed << setprecision(15) << result.second << endl;
return 0;
}