#include <iostream>
#include <queue>
#include <iomanip>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 2e3+10;
int n , cnt, vis[N] , X[N], Y[N];
double a[N][N] , d[N];
struct node {
double first;
int second;
bool operator < (const const &b) const {
return first > b.first;
}
};
priority_queue<node> q;
double dijsktra(int x) {
memset(d, 127, sizeof(d));
q.push({0, x});
d[x] = 0x3f3f3f3f;
while(!q.empty()){
node top = que.top();
que.pop();
vis[top.second] = true;
for(int i = 2; i <= n; i++) {
if(book[i]) continue;
if(d[i] > max(top.first, a[top.second][i])) {
d[i] = max(top.first,a[top.second][i]);
q.push({d[i], i});
}
}
}
return d[2];
}
int main() {
while(true) {
memset(book, 0, sizeof(book));
memset(a, 127, sizeof(a));
cnt++;
scanf("%lld",&n);
if(n == 0) return 0 ;
for(int i = 1; i <= n; i++){
cin >> x[i] >> y[i];
for(int j = 1; j <= i; j++)
a[i][j] = a[j][i] = sqrt(pow(x[i] - x[j], 2) + pow(y[i] - y[j],2));
}
cout << fixed << setprecision(3);
cout << "Scenario #" << cnt << endl << "Frog Distance = " << bfs(1) << endl;
}
return 0;
}