#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<cmath>
#include<string>
#include<map>
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;
struct node{
ll id;
double d;
};
double dis[201],flag[201];
vector<node> p[201];
int main(){
ll n,cnt=1;
while(cin>>n&&n){
ll x[201],y[201];
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
p[i].clear();
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
double l=sqrt(pow((double)(x[i]-x[j]),2)+pow((double)(y[i]-y[j]),2));
node t;
t.id=j;
t.d=l;
p[i].push_back(t);
t.id=i;
p[j].push_back(t);
}
}
for(int i=1;i<=n;i++){
flag[i]=0;
dis[i]=INF;
}
for(int i=0;i<p[1].size();i++){
dis[p[1][i].id]=p[1][i].d;
}
dis[1]=0;
flag[1]=1;
double min_k=0;
for(int i=1;i<n;i++){
double min_s=INF;
ll index;
for(int j=1;j<=n;j++){
if(!flag[j]&&dis[j]<min_s){
min_s=dis[j];
index=j;
}
}
flag[index]=1;
for(int k=0;k<p[index].size();k++){
//这里dis[i]表示从1到i的所有路径中的最大边的最小值
//dis[p[index][k].id]>max(dis[index],p[index][k].d)和单源最短路区别
//不等式的含义:想一下三角形的任意两个点之间有两条路径
//dis[p[index][k].id]是直接路径中最大的边
//max(dis[index],p[index][k].d)是间接路径中最大的边
if(!flag[p[index][k].id]&&dis[p[index][k].id]>max(dis[index],p[index][k].d)){
dis[p[index][k].id]=max(dis[index],p[index][k].d);
}
}
}
cout<<"Scenario #"<<cnt++<<endl<<"Frog Distance = ";
printf("%.3f\n\n",dis[2]);
}
return 0;
}