#include <iostream>
//#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;

const int MAXN=100;
struct Edge
{
    int point1,point2,weight;
    Edge(int p1,int p2,int w):point1(p1),point2(p2),weight(w){};
    Edge(){};
    
};
bool cmp(const Edge & e1,const Edge & e2) 
{
    return e1.weight<e2.weight;
}
int _rank[MAXN];
int father[MAXN];
void intialize(int n)
{
    for(int i=0;i<n;++i)
    {
        father[i]=i;
        _rank[i]=1;
    }
}

int find(int x)
{
    if(x==father[x])
        return x;
    return father[x]=find(father[x]);
}
void _union(int x,int y)
{
    x=find(x);
    y=find(y);
    if(_rank[x]<_rank[y])
        father[x]=y;
    else if(_rank[y]<_rank[x])
        father[y]=x;
    else
    {
        father[x]=y;
        ++_rank[y];
    }
}

int main() 
{
    int n,numE,ans;
    while(cin>>n)
    {
        if(n==0) break;
        ans=0;
        numE=n*(n-1)/2;
        Edge edge[numE];
        intialize(n);
        for(int i=0;i<numE;++i)
        {
            int tp1,tp2,tw;
            cin>>tp1>>tp2>>tw;
            edge[i]=Edge(tp1-1,tp2-1,tw);
        }
        sort(edge,edge+numE,cmp);
        for(int i=0;i<numE;++i)
        {
            Edge tedge=edge[i];
            if(find(tedge.point1)!=find(tedge.point2))
            {
                ans+=tedge.weight;
                _union(tedge.point1,tedge.point2);
            }
        }
        cout<<ans<<endl;

    }


}
// 64 位输出请用 printf("%lld")