import sys import math input = sys.stdin.readline """ Union-Find ref : https://algo-logic.info/union-find-tree/ """ class UnionFind(): def __init__(self, n): self.n = n self.parents = [-1] * n self.group_members = {} def find(self, x): if(self.parents[x] < 0): return x else: self.parents[x] = self.find(self.parents[x]) return self.parents[x] def unite(self, x, y): x = self.find(x) y = self.find(y) if(x == y): return if(self.parents[x] > self.parents[y]): x, y = y, x self.parents[x] += self.parents[y] self.parents[y] = x def same(self, x, y): return (self.find(x) == self.find(y)) def size(self, x): return -self.parents[self.find(x)] def roots(self): return [i for i, x in enumerate(self.parents) if(x < 0)] def build_group_members(self): self.group_members = { x : [] for x in self.roots() } for x in range(self.n): self.group_members[self.find(x)].append(x) return self.group_members def isqrt(n): rn = math.sqrt(n) ok = max(0, int(rn - 2)) ng = int(rn + 2) while(abs(ok - ng) > 1): mid = (ok + ng) // 2 if(mid ** 2 <= n): ok = mid else: ng = mid return ok ''' Main Code ''' n = int(input()) planets = [list(map(int, input().split())) for _ in [0] * n] edges = [] for i in range(n - 1): for j in range(i + 1, n): x1, y1, t1 = planets[i] x2, y2, t2 = planets[j] d = (x1 - x2) ** 2 + (y1 - y2) ** 2 if(t1 != t2): r1 = x1 ** 2 + y1 ** 2 r2 = x2 ** 2 + y2 ** 2 d = r1 + r2 - isqrt(4 * r1 * r2) edges.append((i, j, d)) edges.sort(key=lambda x : x[2]) uni = UnionFind(n) ans = 0 for x, y, z in edges: ans = z uni.unite(x, y) if not(uni.same(0, n - 1)): continue break print(ans)