#include "bits/stdc++.h" using namespace std; #define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i)) #define rep(i,j) FOR(i,0,j) #define each(x,y) for(auto &(x):(y)) #define mp make_pair #define all(x) (x).begin(),(x).end() #define debug(x) cout<<#x<<": "<<(x)< pii; typedef vector vi; typedef vector vll; class UnionFind{ public: UnionFind(int _n):n(_n), cnt(_n), par(_n), rank(_n), size(_n, 1){ for(int i=0;i par, rank, size; }; int sq(int x, int y){ return x*x + y*y; } int b[2021][2021]; vi a[1000]; int main(){ int N, R = 1010; double ans = 1; cin >> N; vi X(N), Y(N); MEM(b, -1); rep(i, N){ cin >> X[i] >> Y[i]; X[i] += R; Y[i] += R; b[X[i]][Y[i]] = i; } UnionFind uf(N); rep(i, N){ FOR(x, X[i] - 10, X[i] + 11)FOR(y, Y[i] - 10, Y[i] + 11)if(sq(x - X[i], y - Y[i]) <= 100 && b[x][y]!=-1){ uf.unite(i, b[x][y]); } } rep(i, N)a[uf[i]].push_back(i); rep(i, N)if(sz(a[i])){ double ma = 0; rep(j, sz(a[i]))rep(k, j)smax(ma, hypot(X[a[i][j]] - X[a[i][k]], Y[a[i][j]] - Y[a[i][k]])); smax(ans, ma + 2); } printf("%0.20f\n", ans); }