// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0189
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
const int INF = 1<<28;
const int MAX = 10;
int main(){

  for(int n;cin>>n,n;){
    vector<vector<int>> d(MAX, vector<int> (MAX, INF));

    int max_node=0;
    for(int i=0;i<n;++i){
      int a,b,c;
      cin>>a>>b>>c;
      d[a][b]=c;
      d[b][a]=c;
      d[a][a]=0;
      d[b][b]=0;
      if(max_node<a) max_node = a;
      if(max_node<b) max_node = b;
    }

    int node,time=INF;

    // i=起点 j=終点 k=iとjの間の点　起点からk点を経由して終点に行く
    for(int k=0;k<=max_node;++k)
      for(int i=0;i<=max_node;++i)
        for(int j=0;j<=max_node;++j) d[i][j] = min(d[i][j], d[i][k] + d[k][j]);

    for(int i=0;i<=max_node;++i){
      int sum=0;
      for(int j=0;j<=max_node;++j){
        if(d[i][j]!=INF) sum += d[i][j];
      }
      if(time>sum){
        time = sum;
        node = i;
      }
    }

    cout << node << " " << time << endl;
  }

  return 0;
}