Problem: Given are N points (x_i, y_i) in a two-dimensional plane.

Find the minimum radius of a circle such that all the points are inside or on it.

Constraints

* 2 \leq N \leq 50
* 0 \leq x_i \leq 1000
* 0 \leq y_i \leq 1000
* The given N points are all different.
* The values in input are all integers.

Input

Input is given from Standard Input in the following format:


N
x_1 y_1
:
x_N y_N


Output

Print the minimum radius of a circle such that all the N points are inside or on it.

Your output will be considered correct if the absolute or relative error from our answer is at most 10^{-6}.

Examples

Input

2
0 0
1 0


Output

0.500000000000000000


Input

3
0 0
0 1
1 0


Output

0.707106781186497524


Input

10
10 9
5 9
2 0
0 0
2 7
3 3
2 5
10 0
3 7
1 9


Output

6.726812023536805158

Solution (in CPP):

Solution:
	//“Make it work, make it right, make it fast.” – Kent Beck
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double dd;
const int siz = 1e6 + 5;
const int MOD = 1e9 + 7;
#define endl '\n'
#define deb(x) cout << #x << " = " << x << endl;
dd dist(dd a, dd b) {
	return (a*a + b*b);
}
void solve(){
	int n;
	cin >> n;
	dd X = 0, Y = 0, d, e, P = 0.1;
	vector<pair<double, double> > a(n);
	for(int i = 0; i < n; ++i){ 
		cin >> a[i].first >> a[i].second;
		X += a[i].first; Y += a[i].second;
	}
	X /= n; 
	Y /= n;
	for (int i = 0; i < 30000; i++) {
		int f = 0;
		d = dist(X - a[0].first, Y - a[0].second);
		for (int j = 1; j < n; j++) {
			e = dist(X - a[j].first, Y - a[j].second);
			if (d < e) { 
				d = e;
				 f = j; 
				}
		}
		X += (a[f].first - X)*P;
		Y += (a[f].second - Y)*P;
		P *= 0.999;
	}
	cout << sqrt(d) << endl;
}

int main(){
	#ifndef RAY
		//freopen("input.txt", "r", stdin);
	#endif
		ios::sync_with_stdio(false);
		cin.tie(nullptr);
		int t = 1;
		//cin >> t;
		while(t--){
				cout << fixed << setprecision(15);
			solve();
		}
	return 0;
}