#include using namespace std; typedef long long int ll; typedef unsigned long long int llu; typedef pair pii; typedef vector vi; typedef vector > vii; #define rrep(i, m, n) for(int i=m; i=m; i--) #define erev(i, n) for(int i=n; i>=1; i--) #define rev(i, n) for(int i=n-1; i>=0; i--) #define EACH(v) (v).begin(), (v).end() #define CNT(a, n, x) (upper_bound(a, a+n, x)-lower_bound(a, a+n, x)) #define minup(m, x) (m=min(m, x)) #define maxup(m, x) (m=max(m, x)) #define mp make_pair #define INF 1000000000 #define MOD 1000000009 #define EPS 1E-9 struct UnionFind { vi data; UnionFind(int size) : data(size, -1) {} bool unite(int x, int y){ x = root(x); y = root(y); if(x != y){ if(data[y] < data[x]) swap(x, y); data[x] += data[y]; data[y] = x; } return x != y; } bool same(int x, int y){ return root(x) == root(y); } int root(int x){ return data[x] < 0 ? x : data[x] = root(data[x]); } int size(int x){ return -data[root(x)]; } }; #define MAX_N 1000 int n; int x[MAX_N]; int y[MAX_N]; int res; #define dist(i, j) ((x[j]-x[i])*(x[j]-x[i]) + (y[j]-y[i])*(y[j]-y[i])) bool check(int i, int j) { return dist(i, j) <= 100; } int main() { cin >> n; rep(i, n) cin >> x[i] >> y[i]; UnionFind uf(n); rep(i, n) rep(j, n) if(check(i, j)) uf.unite(i, j); rep(i, n) rep(j, n) if(uf.same(i, j)) maxup(res, dist(i, j)); printf("%.10f\n", !n ? 1 : (double)sqrt(res) + 2.0); return 0; }