//circumcircles
#include <math.h>
#include <stdio.h>
int getg(double, double, double, double, double, double, double * , double * , double * );
int main(){
double x[1000], y[1000];
double xxx[1000], yyy[1000], rrr[1000];
double xx,yy,rr,dr;
int n=0,i,j,k,l,m1,m2=0,m=0,nn=0,p=0;
while(scanf("%lf %lf",&x[n],&y[n])!=EOF){
for(i=0;i<n;i++)if(x[i]==x[n]&&y[i]==y[n])break;
if(i==n)n++;
}
if(n<3) return 1;
for(i=0; i<n-2; i++){
for(j=i+1; j<n-1; j++){
for(k=j+1; k<n; k++){
if(!getg(x[i],y[i],x[j],y[j],x[k],y[k],&xx,&yy,&rr)){
m1=0;p=1;
for(l=0; l<n; l++){
if(l==i||l==j||l==k)continue;
dr = sqrt((xx-x[l])*(xx-x[l])+(yy-y[l])*(yy-y[l]));
if(fabs(dr-rr)<=0.01){
m1++;
if(m1>m)m=m1;
}
}
}
}
}
}
if(!p)return 1;
printf("%d\n",m+3);
for(i=0; i<n-2; i++){
for(j=i+1; j<n-1; j++){
for(k=j+1; k<n; k++){
if(!getg(x[i],y[i],x[j],y[j],x[k],y[k],&xx,&yy,&rr)){
m1=0;
for(l=0; l<n; l++){
if(l==i||l==j||l==k)continue;
dr = sqrt((xx-x[l])*(xx-x[l])+(yy-y[l])*(yy-y[l]));
if(fabs(dr-rr)<=0.01){
m1++;
}
}
//
if(m1==m){
for(l=0; l<nn; l++){
if(fabs(xx-xxx[l])<=0.01&&fabs(yy-yyy[l])<=0.01&&fabs(rrr[l]-rr)<=0.01)break;
}
if(l==nn){
xxx[nn]=xx; yyy[nn]=yy; rrr[nn]=rr; nn++;
}
}
}
}
}
}
for(l=0; l<nn; l++){
printf("%lf %lf %lf\n",xxx[l],yyy[l],rrr[l]);
}
return 0;
}
//get circumcircle's parameters on three points
int getg(double xx1, double yy1, double xx2, double yy2, double xx3, double yy3, double * xx, double * yy, double * rr){
double p,a1,b1,c1,a2,b2,c2;
double x1,x2,x3,y1,y2,y3,x4,y4,x5,y5,x6,y6,r6;
x1 = xx1; x2 = xx2; x3 = xx3; y1 = yy1; y2 = yy2; y3 = yy3;
//
p = (x1-x3)*(y2-y3)-(x2-x3)*(y1-y3);
if(!p)return -1;
//
x4=(x1+x2)/2; y4=(y1+y2)/2; x5=(x1+x3)/2; y5=(y1+y3)/2;
a1=x2-x1; b1=y2-y1; c1=x4*(x2-x1)+y4*(y2-y1);
a2=x3-x1; b2=y3-y1; c2=x5*(x3-x1)+y5*(y3-y1);
//
x6=(c1*b2-c2*b1)/(a1*b2-a2*b1);
y6=(a1*c2-a2*c1)/(a1*b2-a2*b1);
r6=(x1-x6)*(x1-x6)+(y1-y6)*(y1-y6);
r6=sqrt(r6);
*xx=x6; *yy=y6; *rr=r6;
//
return 0;
}