//给出一个无向图,求一条点1~点2的路径使得路径上的最大边权最小,注意输出G++不能用.3lf
#include<iostream>
#include<queue>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#include<iomanip>
using namespace std;
const int inf=0x3f3f3f3f;
vector<pair<int,double> >e[209];
int n,x[209],y[209];
double dis[209];
double ww(int i,int j)
{
return sqrt(double(x[i]-x[j])*(x[i]-x[j])+double(y[i]-y[j])*(y[i]-y[j]));
}
bool vis[209];
void spfa()
{
for(int i=1; i<=n; i++)
dis[i]=inf;
queue<int>q;
q.push(1);
dis[1]=0;
vis[1]=1;
while(!q.empty())
{
int top=q.front();
q.pop();
vis[top]=0;
for(int i=0; i<e[top].size(); i++)
{
int temp=e[top][i].first;
if(dis[temp]>max(dis[top],e[top][i].second))
{
dis[temp]=max(dis[top],e[top][i].second);
if(!vis[temp])
{
vis[temp]=1;
q.push(temp);
}
}
}
}
}
int main()
{
int cntt=0;
while(~scanf("%d",&n)&&n)
{
//edge ee;
for(int i=1; i<=n; i++)
scanf("%d%d",&x[i],&y[i]);
for(int i=1; i<=n; i++)
for(int j=i+1; j<=n; j++)
{
e[i].push_back(make_pair(j,ww(i,j)));
e[j].push_back(make_pair(i,ww(i,j)));
}
spfa();
printf("Scenario #%d\nFrog Distance = %.3lf\n\n",++cntt,dis[2]);
//cout << "Scenario #" << ++cntt << endl;
//cout << "Frog Distance = " <<fixed << setprecision(3) << dis[2] << endl << endl;
for(int i=1; i<=n; i++)
e[i].clear();
}
return 0;
}