#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <set>
#include <climits> // int ???????????§????????????????????????
using namespace std;
const int MAX_V = 1000; // ???????????°????????§???
const int MAX_E = 2000; // ????????°????????§???
const int INF = INT_MAX; // ???????????§?????????(int ???????????§???)


struct E {
  int to, cost;
  E(int t, int c) : to(t), cost(c) {};
};

int v; // ????????°
vector<E> g[MAX_V]; // ??£??\?????????
int d[MAX_V]; // ??????s ????????????????????¢

// ?????????????????????????????????????????????????????????
// ??????????????????????????°true???????????°false ?????????
bool bellmanford(int s)
{
  // ??????
  fill(d, d + v, INF);
  d[s] = 0;
  // ??????s ??????????????¨???k+1 ???????????????????????????????????¢???
  for(int k = 0; k < v; ++k){
    // ??????1 ?????????????????¨???
    for(int j = 0; j < v; ++j){
      int from = j;
      // ??????????§??????¨????????¨???????????????????????????????????????
      for(int i = 0; i < g[from].size(); ++i){
	int to = g[from][i].to;
	int cost = g[from][i].cost;
	// ???????????¢??¨??????????????´???
	if(d[from] != INF && d[to] > d[from] + cost){
	  d[to] = d[from] + cost;
	  // ????????????????????¨??????????????°?????????????????????????????????????????????
	  // ???????????£??????v ???????????????????????¢????????????????????????????????°????????????????????¨
	  if(k == v - 1)return false;
	}
      }
    }
  }
  // ?????????????????????????????°????????????????????¨??????????????¨?????????
  return true;
}
int main()
{
  for(;;){
    // ??\??????????????????gv ??????????????°???ge ???????????°???gr ????§????
    int gv, ge, gr;
    cin >> ge;
    if(!ge){return 0;}
    set<int> s;

    for(int i = 0; i < ge; ++i){
      // ??\??????????????????gs ??????????§???????gt ??????????????????gd ???????????????
      int gs, gt, gd;
      cin >> gs >> gt >> gd;
      g[gs].push_back(E(gt, gd)); // 2 ???????????????????????±????¨????
      g[gt].push_back(E(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()){
      bellmanford(*it);
      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;
  }
  
}