#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
const double eps=1e-8;
const int n_max=1005;
double X,Y,R;
int n;
struct point
{
double x,y;
point(){}
point(double tx,double ty)
{
x=tx,y=ty;
}
}p[n_max],central;
double dist(point a,point b)
{
return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
}
//求外接圆圆心
point circumcenter(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 point(a.x + (c1*b2-c2*b1)/d , a.y+(a1*c2-a2*c1)/d);
}
//求最小覆盖圆
void min_cover_circle()
{
random_shuffle(p,p+n);
central=p[0];
R=0;
int i,j,k;
for(i=1;i<n;i++)
{
if(dist(central,p[i])+eps>R)
{
central=p[i];
R=0;
for(j=0;j<i;j++)
{
if(dist(central,p[j])+eps>R)
{
central.x=(p[i].x+p[j].x)/2;
central.y=(p[i].y+p[j].y)/2;
R=dist(central,p[j]);
for(k=0;k<j;k++)
{
if(dist(central,p[k])+eps>R)
{
central=circumcenter(p[i],p[j],p[k]);
R=dist(central,p[k]);
}
}
}
}
}
}
}
int main()
{
while(~scanf("%lf%lf%d",&X,&Y,&n))
{
int i;
for(i=0;i<n;i++)
{
scanf("%lf%lf",&p[i].x,&p[i].y);
}
min_cover_circle();
printf("(%.1lf,%.1lf).\n%.1lf\n",central.x,central.y,R);
}
return 0;
}