1A
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int grid[105][205],dist[105][205],n,p;
int floyd()
{
int k,i,j,ans=INF,ans1,minc=0;
for (i=1;i <=n;i++)
for (j=1;j<=n;j++)
dist[i][j] = grid[i][j];
for (k=1;k<=n;k++)
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if(dist[i][j]>dist[i][k]+dist[k][j])
dist[i][j]=dist[i][k]+dist[k][j];
for (i=1;i<=n;i++)
{
ans1=0;
for(j=1;j<=n;j++)
ans1+=dist[i][j];
if(ans>ans1 && ans1>=0)
{
ans=ans1;
p=i;
}
}
for(j=1;j<=n;j++)
if(minc<dist[p][j] && p!=j)
minc=dist[p][j];
return minc;
}
int main()
{
int i,j,t,a,b;
while (scanf("%d",&n) && n)
{
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
grid[i][j]=i==j?0:INF;
for (i=1;i<=n;i++)
{
scanf("%d",&t);
for(j=1;j<=t;j++)
{
scanf("%d%d",&a,&b);
grid[i][a]=b;
}
}
printf("%d %d\n",p,floyd());
}
return 0;
}