#include<bits/stdc++.h>
using namespace std;
double sqr(double x) {return x*x;}
struct point
{
	double x,y;
	double ratio;
	point() {}
	point(double a,double b):x(a),y(b) {}
	void input() {scanf("%lf%lf",&x,&y);}
	void get()
	{
		ratio=min(sqr(x)+sqr(y/2),sqr(x/2)+sqr(y));
		ratio=sqrt(ratio);
	}
};
bool cmp(point a,point b) {return a.ratio>b.ratio;}
const int N=100011;
const double eps=1e-7;
int n;
point p[N];
double tr[N];
double solve(double st)
{
	tr[1]=st;tr[0]=1-st;
	for (int i=2;i<=n;i+=2)
		tr[i]=tr[i-2]+1,tr[i+1]=tr[i-1]+1;
	double ans=0;
	for (int i=1;i<=n;i++)
		ans=max(ans,sqrt(sqr(tr[i])+sqr(p[i].ratio)));
	return ans;
}
void work(int tcase)
{
	scanf("%d",&n);
	for (int i=1;i<=n;i++) p[i].input(),p[i].get();
	sort(p+1,p+n+1,cmp);
	double l,r,ml,mr,ansl,ansr;
	l=0.5;r=1;
	for (int i=1;i<=100;i++)
	{
		ml=(l*2+r)/3;mr=(l+r*2)/3;
		ansl=solve(ml);
		ansr=solve(mr);
		//cout<<l<<" "<<r<<" "<<ml<<" "<<mr<<" "<<ansl<<" "<<ansr<<endl;
		if (ansl<ansr) r=mr;
		else l=ml;
	}
	
	
	
	printf("Case #%d: %.10lf\n",tcase,solve(l));
}
int main()
{
	int T;
	scanf("%d",&T);
	for (int t=1;t<=T;t++) work(t);
}
