#include <iostream>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;

const int inf = 10000000;

struct node {
	int x;
	int y;
};

vector <node> cities;
int d [200];
void diikstra ( int n ){
	d[0] = 0;
	for (int i = 1; i < n; i++){
		d[i] = inf;
	}
	priority_queue < pair <int, int> > q;
	q.push({d[0], 0});
	while (!q.empty()) {
		int num_v = q.top().second;
		node cur = cities[num_v];
		int distv = -q.top().first;
		q.pop();
		for (int i = 0; i < n; i++) {
			 int distance = max (distv, (cur.x - cities[i].x)*(cur.x - cities[i].x)+(cur.y - cities[i].y)*(cur.y - cities[i].y));
            		 if(d[i] > distance){
            			d[i] = distance;
            			q.push ({-distance, i});
            		}
		}
            }
}
int main() {
	cout.precision(3);
	int q;
	cin >> q;
	for (int w = 0; w < q; w++){
		int n;
		cin >> n;
		for (int i = 0; i < n; i++){
			int a, b;
			cin >> a >> b;
			cities.push_back({a,b});
		}
		diikstra (n);
		for (int i = 0; i < n; i++){
			cities.pop_back();
		}
		cout << fixed << sqrt(d[1]) <<  endl;
		
		
	}
	return 0;
}