#include #include #include int N; long long X[1001], Y[1001]; bool used[1001]; long long dist(int i, int j){ long long dx = std::abs(X[i] - X[j]), dy = std::abs(Y[i] - Y[j]); return dx * dx + dy * dy; } bool dfs(int u, long long limit){ used[u] = true; if(u == N){return true;} bool res = false; for(int i=1;i<=N;i++){ if(used[i]){continue;} if(dist(u, i) <= limit * limit){res |= dfs(i, limit);} } return res; } int main(){ scanf("%d", &N); for(int i=1;i<=N;i++){ scanf("%lld %lld", X+i, Y+i); } long long lb = 0ll, ub = 252521000ll; while(ub - lb > 1){ long long mid = (lb + ub) / 2 * 10; memset(used, 0, sizeof(used)); if(dfs(1, mid)){ ub = mid / 10; }else{ lb = mid / 10; } } printf("%lld\n", ub * 10); }