#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;
}