class UnionFind:#最小生成树经典
    def __init__(self, n):
        self.pt = [i for i in range(n + 1)]#切记要多存储一些,防止越界(遇到越界,就多点空间试试)
        self.h = [0 for i in range(n + 1)]

    def find(self, x):
        if self.pt[x] != x:
            return self.find(self.pt[x])
        return x

    def union(self, x, y):
        px, py = self.pt[x], self.pt[y]
        if px == py:
            return
        if self.h[px] > self.h[py]:
            self.pt[py] = self.find(px)
        elif self.h[px] < self.h[py]:
            self.pt[px] = self.find(py)
        else:
            self.pt[px] = self.find(py)
            self.h[py] += 1


while True:
    try:
        n = int(input())
        if n == 0:
            break
        edge = []
        for i in range(n * (n - 1) // 2):
            edge.append(list(map(int, input().split(" "))))
        edge.sort(key=lambda x: x[2])
        v = UnionFind(n)
        sum = 0
        for i in range(n * (n - 1) // 2):
            if v.find(edge[i][0]) != v.find(edge[i][1]):
                sum += edge[i][2]
                v.union(v.find(edge[i][0]), v.find(edge[i][1]))
        print(sum)
    except:
        break