## hdu6242(随机化)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.Random;
import java.util.StringTokenizer;

static StringTokenizer tokenizer;
static void init(InputStream input)
{
tokenizer=new StringTokenizer("");
}
static String next() throws IOException{
while (!tokenizer.hasMoreTokens())
}
static int nextInt() throws IOException {
return Integer.parseInt(next());
}
static double nextDouble() throws IOException{
return Double.parseDouble(next());
}
}
class Point {
double x,y;

/**
* @param x
* @param y
*/
public Point(double x, double y) {
super();
this.x = x;
this.y = y;
}

/**
*
*/
public Point() {
super();
// TODO Auto-generated constructor stub
}

}
public class Main {
static Random random;
static int p1,p2,p3,t,n,k,maxn,cnt;
static double x[],y[];
static double mx,my,r,nowr;
static Point points[];
static DecimalFormat dec=new DecimalFormat("0.000");
static double dist(Point a,Point b)
{
double xsqr=(a.x-b.x)*(a.x-b.x);
double ysqr=(a.y-b.y)*(a.y-b.y);
return Math.sqrt(xsqr+ysqr);
}
static boolean oneline(Point a,Point b,Point c)
{
double x1=a.x-c.x;
double y1=a.y-c.y;
double x2=b.x-c.x;
double y2=b.y-c.y;
double res=x1*y2-x2*y1;
if (Math.abs(res)<1e-6) return true;
return false;
}
static Point waixin(Point a,Point b,Point c)
{
double a1=b.x-a.x,b1=b.y-a.y,c1=(a1*a1+b1*b1)/2;
double a2=c.x-a.x,b2=c.y-a.y,c2=(a2*a2+b2*b2)/2;
double d=a1*b2-a2*b1;
return new Point(a.x+(c1*b2-c2*b1)/d,a.y+(a1*c2-a2*c1)/d);
}
static void deal() {
if (n==1)
System.out.println(dec.format(x[1])+" "+dec.format(y[1])+" 0");
else if (n<=4)
{
mx=(x[1]+x[2])/2;
my=(y[1]+y[2])/2;
r=dist(points[1],points[2])/2;
System.out.println(dec.format(mx)+" "+dec.format(my)+" "+dec.format(r));
}
else
{
if (n%2==1) k=n/2+1;
else k=n/2;
while (true)
{
p1=random.nextInt(n)+1;
p2=random.nextInt(n)+1;
p3=random.nextInt(n)+1;
if ((p1!=p2)&&(p2!=p3)&&(p1!=p3))
if (!oneline(points[p1],points[p2], points[p3]))
{
Point p=waixin(points[p1],points[p2],points[p3]);
r=dist(points[p1],p);
cnt=0;
for (int i=1;i<=n;i++)
{
nowr=dist(points[i], p);
if (Math.abs(nowr-r)<1e-6)
cnt++;
if (cnt+n-i<k) break;
if (cnt>=k) break;
}
if (cnt>=k) {
System.out.println(dec.format(p.x)+" "+dec.format(p.y)+" "+dec.format(r));
return;
}
}
}
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
random=new Random();
maxn=100000;
x=new double[maxn+1];
y=new double[maxn+1];
points=new Point[maxn+1];
for (int casenum=1;casenum<=t;casenum++)
{
for (int i=1;i<=n;i++)
{
points[i]=new Point(x[i],y[i]);
}
deal();
}
}

}