#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <set>
#include <climits> 
#include <map>
using namespace std;

const int MAX_V = 1000; // ???????????°????????§???
const int INF = 1000000; // ???????????§?????????(int ???????????§???)
int v; // ????????°
int g[MAX_V][MAX_V]; // ??£??\??????
int d[MAX_V]; // ??????s ????????????????????¢
bool used[MAX_V]; // ?????§??????????????¢????¢??????????????????¨???????????°

void dijkstra(int s)
{
  // ??????
  fill(d, d + v, INF);
  fill(used, used + v, false);
  d[s] = 0;
  // ??????s ????????????????????????????????¢????¨????
  for(;;){
    // ???????¢???????????????????????????????????????¢???????°???????????????¢???
    // ?????????????????¢???????????????????????¢????¢??????????
    int i = -1;
    for(int j = 0; j < v; ++j)
      if(!used[j] && (i == -1 || d[i] > d[j]))
	i = j;
    if(i == -1)break; // ??¨??????????????????????????¢????¢????????????´???
    // ?????????????????¢???????????????????????¢?¢????
    used[i] = true;
    // ???????????¢????¢?????????????????????£??\????????????????????±?????´??°
    for(int j = 0; j < v; ++j)
      d[j] = min(d[j], d[i] + g[i][j]);
  }
}

int main()
{
  for(;;){
    int gv, ge;
    cin >> ge;
    if(ge==0){return 0;}
    set<int> s;

    fill(&g[0][0], &g[MAX_V][0], 100000);
    //for(int i=0;i<5;i++){for(int j=0;j<5;j++){cout << g[i][j] << " ";}cout << endl;}


    for(int i = 0; i < ge; ++i){
      int gs, gt, gd;
      cin >> gs >> gt >> gd;
      g[gs][gt]=gd;
      g[gt][gs]=gd;
      s.insert(gs);
      s.insert(gt);
    }

    gv=s.size();
    v = gv;

    vector<pair<int,int> > p(s.size());
    set<int>::iterator it= s.begin();



    int count=0;
    while(it!=s.end()){
      dijkstra(*it);
      //for(int i=0;i<v;i++)cout << d[i] << endl;

      int sum=0;
      for(int i=0;i<v;i++){sum+=d[i];}
      //cout << sum << ":" << *it << endl;
      p[count].first=sum;
      p[count].second=*it;
      it++;
      count++;
    }

    sort(p.begin(),p.end());
  
    //for(int i=0;i<p.size();i++)
    cout << p[0].second << " " << p[0].first << endl;
  }
  return 0;
}