// Floyd算法
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int map[102][102];
int mx[102];
int main()
{
int n;
while(scanf("%d",&n),n)
{
int i,j,k;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j)
map[i][j]=0;
else
map[i][j]=999999;
for(int i=1;i<=n;i++)
{
int m,a,b;
scanf("%d",&m);
for(int j=1;j<=m;j++)
{
scanf("%d%d",&a,&b);
map[i][a]=b;
}
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(map[i][j]>map[i][k]+map[k][j])
map[i][j]=map[i][k]+map[k][j];
memset(mx,0,sizeof(mx));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(map[i][j]>mx[i])
mx[i]=map[i][j];
int mn=999999;
int ff;
for(int i=1;i<=n;i++)
if(mx[i]<mn)
{
mn=mx[i];
ff=i;
}
printf("%d %d\n",ff,mn);
}
system("pause");
return 0;
}