#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef vectorvs; typedef vectorvi; typedef vectorvvi; typedef pairpii; typedef long long ll; typedef pairpll; #define rrep(i,x,n) for(int i=(x);i<(n);++i) #define rep(i,x) rrep(i,0,(x)) #define fi first #define se second #define each(i,c) for(typeof((c).begin())i=(c).begin();i!=(c).end();++i) #define all(c) (c).begin(),(c).end() #define rall(c) (c).rbegin(),(c).rend() #define pb push_back class union_find{ private: int n; vectorp,r; public: void init(int n_){ n=n_; p=vector(n); r=vector(n,0); for(int i=0;i>N; ll x[1000],y[1000]; rep(i,N)cin>>x[i]>>y[i]; vectorV; rep(i,N)rrep(j,i+1,N)V.pb(data(i,j,(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))); sort(all(V)); union_find uf(N); ll ma=0; rep(i,V.size()){ data d=V[i]; ma=max(ma,d.len); uf.unite(d.x,d.y); if(uf.same(0,N-1))break; } ll ub=2000000000,lb=0; while(ub-lb>1){ ll mid=(ub+lb)/2; if(mid*mid>=ma)ub=mid; else lb=mid; } if(ub%10)ub=ub/10*10+10; else ub=ub/10*10; cout<