#include <iostream>#include <cstdio>usingnamespacestd;
int ans[101][101];
int wtime[101][101];
int main() {
int n;
while (scanf("%d", &n) != EOF && n != 0) {
int t, d, m;
memset(ans, -1, sizeof(ans));
for (int i = 1; i <= n; i++) {
ans[i][i] = 0;
cin >> m;
for (int j = 0; j < m; j++) {
cin >> t >> d;
ans[i][t] = d;
}
}
for (int k = 1; k <= n; k ++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (ans[i][k] == -1 || ans[k][j] == -1)
continue;
if (ans[i][j] == -1 || ans[i][k] + ans[k][j] < ans[i][j])
ans[i][j] = ans[i][k] + ans[k][j];
}
}
}
int min = 9999999;
int time = 0;
int idx = -1;
bool flag;
for (int i = 1; i <= n; i++) {
flag = true;
time = 0;
for (int j = 1; j <= n; j++) {
if (ans[i][j] == -1) {
flag = false;
break;
}
if (time < ans[i][j])
time = ans[i][j];
}
if (flag && time < min){
min = time;
idx = i;
}
}
cout << idx << " " << min << endl;
}
return0;
}