#include <iostream>
using namespace std;
const int inf = 0x3f3f3f3f;
int n, m;
int a, b;
int e[110][110];
int main() {
int i, j, k;
while (cin >> n && n) {
memset(e, inf, sizeof(e));
for (i = 1; i <= n; i++)
e[i][i] = 0;
for (i = 1; i <= n; i++) {
cin >> m;
for (j = 1; j <= m; j++) {
cin >> a >> b;
e[i][a] = b;
}
}
for (k = 1; k <= n; k++) {
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
e[i][j] = min(e[i][j], e[i][k] + e[k][j]);
}
}
}
int ans = inf, sum , index;
for (i = 1; i <= n; i++) {
sum = 0;
for (j = 1; j <= n; j++) {
sum = max(e[i][j], sum);
}
if (sum < ans) {
index = i;
ans = sum;
}
}
if (ans == inf)
cout << "disjoint\n" << endl;
else
cout << index << " " << ans << endl;
}
return 0;
}