#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
using namespace std;
//英语 抄博友程序 多点间最短距离 分治没实现 枚举实现巧妙 背
struct nod{
double x;
double y;
int id;
}ve[200008];
bool cmp(nod a,nod b)
{
//if(a.x==b.x)
//{
// return a.y<b.y;
//}else
{
return a.x<b.x;
}
}
int main()
{
int T;
scanf("%d",&T);
for(int o=0;o<T;o++)
{
int n;
scanf("%d",&n);
for(int i=0;i<n*2;i++)
{
scanf("%lf%lf",&ve[i].x,&ve[i].y);
ve[i].id=i/n;
}
sort(ve,ve+2*n,cmp);
double jg=2000000000;
//cout<<jg<<endl;
for(int i=0;i<n*2;i++)
{
for(int j=i+1;j<n*2;j++)
{
if(ve[i].id!=ve[j].id)
{
double t=sqrt((ve[i].x-ve[j].x)*(ve[i].x-ve[j].x)
+(ve[i].y-ve[j].y)*(ve[i].y-ve[j].y));
if(t<jg)
{
jg=t;
}
if(jg<=(ve[j].x-ve[i].x))//巧妙
{
break;
}
}
}
}
//cout<<jg<<endl;
printf("%0.3f\n",jg);//lf wa
}
return 0;
}