class UnionFind: def __init__(self,n): self.n=n self.parent=[-1]*n def root(self,x): if self.parent[x]<0:return x self.parent[x]=self.root(self.parent[x]) return self.parent[x] def merge(self,x,y): x,y=self.root(x),self.root(y) if x==y:return if -self.parent[x]<-self.parent[y]: x,y=y,x self.parent[x]+=self.parent[y] self.parent[y]=x def same(self,x,y): return self.root(x)==self.root(y) def size(self,x): return -self.parent[self.root(x)] def groups(self): members=[[] for _ in range(self.n)] for v in range(self.n): members[self.root(v)].append(v) res=[] for member in members: if member:res.append(member) return res n=int(input()) xy=[list(map(int,input().split())) for _ in range(n)] def dist(a,b): return abs(a[0]-b[0])**2+abs(a[1]-b[1])**2 def check(x): uf=UnionFind(n) for i in range(n-1): for j in range(i+1,n): if dist(xy[i],xy[j])<=x**2: uf.merge(i,j) return uf.same(0,n-1) ng,ok=-1,10**9 while ok-ng>1: mid=(ok+ng)//2 if check(10*mid): ok=mid else: ng=mid print(10*ok)