#include #include using namespace std; using namespace atcoder; #define rep(i, n) REP(i, 0, n) #define REP(i, s, e) for (ll i = (s); i < (ll)(e); i++) #define repr(i, n) REPR(i, n, 0) #define REPR(i, s, e) for (ll i = (ll)(s - 1); i >= (ll)(e); i--) #define all(r) r.begin(), r.end() #define rall(r) r.rbegin(), r.rend() typedef long long ll; typedef vector vi; typedef vector vl; template T chmax(T& a, const U& b) { if (a >= b) return false; a = b; return true; } template T chmin(T& a, const U& b) { if (a <= b) return false; a = b; return true; } void yes_no(bool f, string yes = "Yes", string no = "No") { cout << (f ? yes : no) << "\n"; } void solve() { int n; cin >> n; using P = pair; vector

pos(n); rep(i, n) { ll x, y; cin >> x >> y; pos[i] = {x, y}; } using T = tuple; vector v; v.reserve(n * n); rep(i, n) rep(j, i) { ll dx = pos[i].first - pos[j].first; ll dy = pos[i].second - pos[j].second; v.emplace_back(dx * dx + dy * dy, i, j); } sort(all(v)); dsu uf(n); for (auto& [d, i, j] : v) { uf.merge(i, j); if (uf.same(0, n - 1)) { ll ng = 0, ok = (ll)2e9 + 10; while (ok - ng > 1) { ll mid = (ok + ng) / 2; if (mid * mid >= d) ok = mid; else ng = mid; } ll ans = (ok + 9) / 10 * 10; cout << ans << "\n"; return; } } } int main() { cin.tie(0); ios::sync_with_stdio(false); int t = 1; // multi-testcase // cin >> t; rep(ti, t) solve(); return 0; }