#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#include <stack>
#include <set>
using namespace std;
#define max(a,b)    (((a) > (b)) ? (a) : (b))
#define min(a,b)    (((a) < (b)) ? (a) : (b))
const int INF=100000;
const int N=123;
int d[N][N];
int V;
int vmax=0;
void init()
{
    for(int i=0;i<N;++i)
    {
        for(int j=0;j<N;++j)
        {
            d[i][j]=INF;
        }
        d[i][i]=0;
    }
}


void floyd()
{
	for(int k=0; k<V; ++k)
	{
		for(int i=0; i<V; ++i)
		{
			for(int j=0; j<V; ++j)
			{
				d[i][j]=min(d[i][j], d[i][k]+d[k][j]);
			}
		}
	}
}



int main()
{
    int n;
    while(scanf("%d",&n) && n)
    {
        init();
        for(int i=0; i<n; ++i)
        {
            int x,y,va;
            scanf("%d%d%d",&x,&y,&va);
            d[x][y]=d[y][x]=va;
            vmax=max(vmax,max(x,y));
        }
        V=vmax+1;
        floyd();
        int xmin=INF,xminidx=0;
        for(int i=0;i<=vmax; ++i)
        {
            int x=0;
            for(int j=0; j<=vmax; ++j)
            {
                if(d[i][j]>=INF) continue;
                x+=d[i][j];
            }
            if(x<xmin)
            {
                xmin=x;
                xminidx=i;
            }
        }
        printf("%d %d\n",xminidx, xmin);

    }



    return 0;
}