//* Problem  : F - Frogger
//* Contest  : UzhNU Local
//* Origin   : Ulm-1997
//* Type     : Solution
//* Date     : 2008.02.04
//* Author   : alt
//* Language : C++
//* Compiler : Microsoft Visual C++ 6.0
//* Algoritm : 

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

#include <queue>

struct point{
	double x, y;
} b[256];

double a[256][256];

#define int64 __int64

int n, r;

double res;

double dist[200*200];

double len(point p1, point p2)
{
	double dx = p1.x - p2.x;
	double dy = p1.y - p2.y;
	return sqrt(dx * dx + dy * dy);
}

int cmp_double(const void *a, const void *b)
{
	double k = *(double*)a - *(double*)b;
	if (fabs(k) < 0.00001) return 0;
	if (k > 0) return 1;
	return -1;
}

int vis[256];

int ok(double d)
{
	memset(vis, 0, sizeof(vis));
	std::queue <int> q; q.push(0); vis[0] = 1;
	while (!q.empty())
	{
		int k = q.front(); q.pop();
		for (int i = 0; i < n; i++)
			if (a[k][i] <= d && !vis[i])
			{
				if (i == 1) return 1;
				vis[i] = 1;
				q.push(i);
			}
	}
	return 0;
}


void solve()
{
	int i, j; r = 0;
	for (i = 0; i < n; i++)
		for (j = i; j < n; j++)
		{
			a[i][j] = a[j][i] = len(b[i], b[j]);
			dist[r++] = a[i][j];
		}
	qsort(dist, r, sizeof(dist[0]), cmp_double);
	for (int k = 0; ; k++)
	{
		if (ok(dist[k]+0.0001)) {res = dist[k]; return;}
	}
}

int main()
{
	int nt = 0;
	while (1)
	{
		scanf("%d", &n); if (!n) break;
		for (int i = 0; i < n; i++)
			scanf("%lf%lf", &b[i].x, &b[i].y);
		solve();
		printf("Scenario #%d\n", ++nt);
		printf("Frog Distance = %.3lf\n\n", res);
	}
	return 0;
}