#include #include #include #include #include #include #include using namespace std; double sq(double x){ return x*x; } class v3{ public: v3():x(0),y(0),z(0){} v3(double x,double y,double z):x(x),y(y),z(z){} double dist(const v3 &v){ return sqrt(sq(x-v.x)+sq(y-v.y)+sq(z-v.z)); } double x,y,z; }; const double huge_num=1e6; int main() { srand(time(NULL)); cout<>cases; while(cases--){ int n;cin>>n; vector cs(n); vector rs(n); for (int i=0;i>x>>y>>z; cs[i]=v3(x,y,z); cin>>rs[i]; } cs.push_back(v3(1+huge_num,0.5,0.5)); rs.push_back(huge_num); cs.push_back(v3(0.5,1+huge_num,0.5)); rs.push_back(huge_num); cs.push_back(v3(0.5,0.5,1+huge_num)); rs.push_back(huge_num); cs.push_back(v3(-huge_num,0.5,0.5)); rs.push_back(huge_num); cs.push_back(v3(0.5,-huge_num,0.5)); rs.push_back(huge_num); cs.push_back(v3(0.5,0.5,-huge_num)); rs.push_back(huge_num); double ans=0; for (int i=0;i<50;i++){ v3 cur((double)rand()/RAND_MAX,(double)rand()/RAND_MAX,(double)rand()/RAND_MAX); double dist=0.5; while (dist>1e-6){ for (int i=0;i<50;i++){ double worst=1e20; int wi; for (int i=0;id){ worst=d; wi=i; } } ans>?=worst; v3 ve(cur.x-cs[wi].x,cur.y-cs[wi].y,cur.z-cs[wi].z); double ab=ve.dist(v3(0,0,0)); if (ab<1e-6){ ve=v3((double)rand()/RAND_MAX-0.5,(double)rand()/RAND_MAX-0.5,(double)rand()/RAND_MAX-0.5); ab=ve.dist(v3(0,0,0)); } ve.x*=dist/ab; ve.y*=dist/ab; ve.z*=dist/ab; cur.x+=ve.x; cur.y+=ve.y; cur.z+=ve.z; } dist/=2; } } cout<