struct Union { var parent: [Int] init(_ N: Int) { self.parent = Array(0...N) } mutating func findParent(_ x: Int) -> Int { if x != parent[x] { parent[x] = findParent(parent[x]) } return parent[x] } mutating func union(_ x: Int, _ y: Int) { let parentX = findParent(x) let parentY = findParent(y) if parentX < parentY { parent[parentY] = parentX } else { parent[parentX] = parentY } } mutating func isSameParent(_ a: Int, _ b: Int) -> Bool { return findParent(a) == findParent(b) } } if let input1 = readLine(), let NM = input1.split(separator: " ").compactMap({Int($0)}) as? [Int], let N = NM.first, let M = NM.last { if N==2 { print(0) } else { var edges: [(u:Int, v: Int, w: Int)] = [] for _ in 0..