( ̄▽ ̄)"
//求每条通路中的最大跳跃距离(即最大的两点间距)中的最小值(所谓minimax),
//即为frog distance,
//且青蛙跳到任意点,
//因此用的是稍作改变的folyd算法,
//folyd算法用于求解任意两点之间的最短路;
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
double lowcost[210][210];
struct xy
{
int x,y;
}s[210];
void floyd(int n)
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(lowcost[i][j]>lowcost[i][k]&&lowcost[i][j]>lowcost[k][j])
lowcost[i][j]=lowcost[j][i]=max(lowcost[i][k],lowcost[k][j]);
}
double dis(int a,int b)
{
return sqrt((double)(s[a].x-s[b].x)*(s[a].x-s[b].x)+(double)(s[a].y-s[b].y)*(s[a].y-s[b].y));
}
int main()
{
int n,Case=0;
while(scanf("%d",&n)&&n!=0)
{
Case++;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
lowcost[i][j]=10000000;
for(int i=1;i<=n;i++)
scanf("%d%d",&s[i].x,&s[i].y);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
lowcost[i][j]=lowcost[j][i]=dis(i,j);
floyd(n);
printf("Scenario #%d\nFrog Distance = %.3lf\n\n",Case,lowcost[1][2]);
}
return 0;
}