struct point
{
       double x;
       double y;
};
main()
{
      int n;
      scanf("%d",&n);
      struct point *p;
      p=(struct point*)malloc(sizeof(point)*n);
      int i,j;
      for(i=0;i<n;i++)
      {
                      scanf("%lf %lf",&p[i].x,&p[i].y);
      }
      double*d=(double*)malloc(sizeof(double)*(n-1));
      for(i=0;i<n-1;i++)
      {d[i]=0.0;}
      double c;
      for(i=0;i<n-1;i++)
      {
                        for(j=i+1;j<n;j++)
                        {
                                          c=sqrt(((p[i].x-p[j].x)*(p[i].x-p[j].x))+((p[i].y-p[j].y)*(p[i].y-p[j].y)));
                                          if(c>d[i])
                                          d[i]=c;
                        }
      }
      double max=0.0;
      for(i=0;i<n-1;i++)
      {
                        if(d[i]>max)
                        max=d[i];
      }
      printf("%.4lf\n",max);
      getchar();
      getchar();
      getchar();
}


int main()
{
	int n;
	float t,max=0;
	struct point{
	   float x,y;
	}dis[1000];
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%f%f",&dis[i].x,&dis[i].y);
	}
	for(int k=0;k<n;k++)
	{
		for(int j=0;j<n;j++)
		{
		t=sqrt((dis[k].x-dis[j].x)*(dis[k].x-dis[j].x)+(dis[k].y-dis[j].y)*(dis[k].y-dis[j].y));
        if(t>max)max=t;
		}
	}
	printf("%.4f\n",max);
	return 0;
}


int main ()
{
  	int i,j,n;
	double m=0,l,a,b,c,d;

	scanf("%d",&n);
	struct point
	{
		float x,y;
	}   *p;

		p=(struct point *)malloc(sizeof(point)*n);
		for(i=0;i<n;i++)
		{
			scanf("%f%f",&(p+i)->x,&(p+i)->y);
		}
		for(i=1;i<n;i++){
		for(j=0;j<i;j++)
			{
				a=(p+i)->x;b=(p+j)->x;c=(p+i)->y;d=(p+j)->y;
                l=sqrt((a-b)*(a-b)+(c-d)*(c-d));
				if(l>m)
					m=l;
			}
		}
		printf("%.4f",m);
		free (p);

}


///???//
int iIndex,iIndex1,iCount;
int i,j,k,l,m,n;//???????
double x[1000];
double y[1000];
double MaxDistance,NowDistance;
/////////////
/* ???????
void Input()
{
ifstream fin("D:\\Brother\\Kon\\Debug\\message.in");
fin>>iCount;
for (i=0; i<iCount; i++)
fin>>x[i]>>y[i];
fin.close();
}
*/

void _Calculate()
{
for(i=0;i<iCount;i++)
{
for(j=i;j<iCount;j++)
{
NowDistance = sqrt( ( x[i] - x[j] )*( x[i] - x[j] ) + ( y[i] - y[j] )*( y[i] - y[j] ) );
if (NowDistance > MaxDistance)
{MaxDistance=NowDistance;}
}
}
}
int main(int argc, char* argv[])
{

MaxDistance=-1;
//iIndex=0;iIndex1=0;
/* ??(x[iIndex],y[iIndex])
  ???????-1????????~???????????*/
//->??????????printf("Hello World!\n");
// ??????????Input();

scanf("%d",&iCount);

for (i=0;i<iCount;i++)
{

cin>>x[i]>>y[i];
}

_Calculate();

cout << MaxDistance<<endl;

return 0;
}


int main()
{
	struct
	{double x,y;
	}a[10000];
	double l,max=0;
	int i,j,n;

	scanf ("%d",&n);

	for (i=1;i<=n;i++)
		scanf ("%lf%lf",&a[i].x,&a[i].y);

	for (i=1;i<n;i++)
		for (j=i+1;j<=n;j++)
			{
				l= (a[i].x - a[j].x ) * (a[i].x - a[j].x ) + (a[i].y - a[j].y ) * (a[i].y - a[j].y );
				if (l>max) max=l;
			}
		max= sqrt(max);
		printf ("%.4lf",max);
	return 0;
}


int main()
{
	struct point{
		double x;
		double y;
	}point[100];
	int i,j,n;
	double M=0.0,length;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&point[i].x,&point[i].y);
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			length=sqrt((point[j].x-point[i].x)*(point[j].x-point[i].x)+(point[j].y-point[i].y)*(point[j].y-point[i].y));
			if(length>M)
				M=length;
		}
	}
	printf("%.4f\n",M);

	return 0;
}


int i,num,p;
float x[10],y[10];
double dis,temp;
int main(){
scanf("%d",&num);
dis=0;
for (i=1;i<=num;i++){
	scanf("%f%f",&x[i],&y[i]);
}
for (p=1;p<=num;p++){
	for (i=num;i>0;i--){
		temp=pow((x[p]-x[i])*(x[p]-x[i])+(y[p]-y[i])*(y[p]-y[i]),0.5);
		if (temp>=dis)
		{
		dis=temp;
		}
	}
}
printf("%.4f\n", dis);
return 0;
}


struct point
{
       double x;
       double y;
};

int main(int argc, char *argv[])
{
  int n,i,j;
  scanf("%d",&n);
  struct point stu[n];
  for (i=0;i<=n-1;i++)
      scanf("%lf%lf",&stu[i].x,&stu[i].y);
  double dis[n][n];
  for (i=0;i<=n-1;i++)
  {
      for (j=i+1;j<=n-1;j++)
          dis[i][j]=sqrt((stu[i].x-stu[j].x)*(stu[i].x-stu[j].x)+(stu[i].y-stu[j].y)*(stu[i].y-stu[j].y));
  }
  double max=0;
  for (i=0;i<=n-1;i++)
  {
      for (j=i+1;j<=n-1;j++)
          if (max<dis[i][j])
             max=dis[i][j];
  }
  printf("%.4lf",max);
  return 0;
}


main()
{int i,j,k,m,n,p=0,q;
 scanf("%d",&n);
 q=n*(n-1)/2;
 double t,jl[q];
 struct{double x;double y;}dian[n];
 for(i=0;i<n;i++)
    scanf("%lf %lf",&dian[i].x,&dian[i].y);
 for(i=0;i<(n-1);i++)
   {for(j=i+1;j<n;j++)
     {
     jl[p]=sqrt((dian[i].x-dian[j].x)*(dian[i].x-dian[j].x)+(dian[i].y-dian[j].y)*(dian[i].y-dian[j].y));
     p++;
    } }
 for(i=0;i<(q-1);i++)
  { for(j=i+1;j<q;j++)
     if(jl[j]>jl[i]) {t=jl[j];jl[j]=jl[i];jl[i]=t;}
  }
  printf("%.4lf",jl[0]);

}


int main(){
	struct point{
		double x,y;
	}point[10];
	int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%lf %lf",&point[i].x,&point[i].y);
	}
	double max[10];
	for(i=0;i<n-1;i++){
		int j;
		double dis[10];

		for(j=i+1;j<n;j++){
			dis[j-1]=sqrt((point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y));
		}

		for(j=i+1;j<n-1;j++){
			if(dis[j-1]>dis[j]){
				max[i]=dis[j-1];
				dis[j]=dis[j-1];
			}
            else max[i]=dis[j];
		}
	}
	double M;
	for(i=0;i<n-1;i++){
		if(max[i]>max[i+1]){
			M=max[i];
			max[i+1]=max[i];
		}
        else M=max[i+1];
	}
	printf("%.4f",M);
	return 0;
}


double dis(double x,double y,double p,double q)
{
	double d,e,f;
	e=x-p;
	f=y-q;
	d=sqrt(e*e+f*f);
	return d;
}

void main()
{
	int n,i,j,k;
	double a[30][2],ben[300],max;

	scanf("%d",&n);

	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&a[i][0],&a[i][1]);}
	k=0;

    for(i=0;i<n;i++)
		for(j=0;j<i;j++)
		{ben[k]=dis(a[i][0],a[i][1],a[j][0],a[j][1]);
		k=k+1;}
	max=ben[0];
    for(i=0;i<k;i++)
	{
		if(ben[i]>max) max=ben[i];}
	printf("%.4lf",max);
}


int main()
{
	int num;
	double numm[100][2];
	double dis;
	cin>>num;
	double max=0;
	for(int i=0; i<num ; i++ ) cin>>numm[i][0]>>numm[i][1];
	for(int i=0;i<num;i++)
		for(int j=0;j<i;j++)
		{
			dis=sqrt(pow(numm[i][0]-numm[j][0],2)+pow(numm[i][1]-numm[j][1],2));
			if(dis>max) max=dis;
		}

		cout<<setprecision(4)<<fixed<<max;

	return 0;
}


struct point
{
	double x, y;
}points[200];
int n;

double getMaxDis(int i);
int main()
{
	scanf("%d", &n);
	int i;
	for(i=0; i<n; i++)
		scanf("%lf %lf", &points[i].x, &points[i].y);

	double MaxDis=0, t;
	for(i=0; i<n; i++)
	{
		t = getMaxDis(i);
		if(t > MaxDis)
			MaxDis = t;
	}
	printf("%.4lf", sqrt(MaxDis));
}

double getMaxDis(int i)
{
	int j;
	double MaxDis = 0, dx, dy;
	for(j=0; j<n; j++)
	{
		dx = (points[i].x - points[j].x)*(points[i].x - points[j].x);
		dy = (points[i].y - points[j].y)*(points[i].y - points[j].y);
		if(dx + dy > MaxDis)
		{
			MaxDis = dx + dy;
		}
	}
	return MaxDis;
}


main()
{
    int i,j,n;
    scanf("%d",&n);
    double*a=(double*)malloc(n*sizeof(double));
    double*b=(double*)malloc(n*sizeof(double));
    for(i=0;i<n;i++)
    {
     scanf("%lf %lf",&a[i],&b[i]);
    }
    double max=0;
    for(i=0;i<n-1;i++)
    {
         for(j=i+1;j<n;j++)
         max=(((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]))>max)? ((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j])):max;
    }
    printf("%.4lf",sqrt(max));
}


int main()
{
	int i,j,n;
	scanf("%d",&n);
	double *x=(double *)malloc(sizeof(double)*n);
	double *y=(double *)malloc(sizeof(double)*n);
	double dis=0,temp;
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&x[i],&y[i]);
	}
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			temp=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
			if(dis<temp)
				dis=temp;
		}
	}
	printf("%.4f\n",sqrt(dis));
}


int main(){
	int k,n,i;
double a,b;
	scanf("%d",&n);
	struct point{
		double x;
		double y;};
	struct point d[max];
	for (i=0;i<n;i++)
scanf("%lf %lf",&d[i].x,&d[i].y);
	a=0;
		for(i=1;i<n;i++)
	{for(k=0;k<i;k++)
		{b=sqrt((d[i].x-d[k].x)*(d[i].x-d[k].x)+(d[i].y-d[k].y)*(d[i].y-d[k].y));

if(b>a)
a=b;}

	}a=(float)(a);
		printf("%.4f",a);
return 0;
}


int main()
{
	int n,i,j;
	scanf("%d",&n);
	double *x,*y,*z;
	double s,*s1;
	x=(double *)malloc(sizeof(double)*n);
	y=(double *)malloc(sizeof(double)*n);
    z=(double *)malloc(sizeof(double)*n);
    s1=(double *)malloc(sizeof(double)*n);
 	for(i=0;i<n;i++){
		scanf("%lf %lf",&x[i],&y[i]);
	}
	for(i=0;i<n;i++){
		s=0;
		for(j=i+1;j<n;j++){
			s1[j]=pow(x[j]-x[i],2)+pow(y[j]-y[i],2);
			if(s1[j]>s) {
				s=s1[j];
		}
		z[i]=s;
	}
	}
    int max=0;
	for(i=0;i<n;i++){
		if(z[i]>z[max])
			max=i;
	}
	printf("%.4lf\n",sqrt(z[max]));
	return 0;
}


double dis(float a,float b,float c,float d)
{
       return (double)sqrt((a-c)*(a-c)+(b-d)*(b-d));
}
main()
{
      int n,i,j;
      float a[1000],b[1000],max=0.0;
      scanf("%d",&n);
      for(i=0;i<n;i++)
      scanf("%f %f",&a[i],&b[i]);
      for(i=0;i<n;i++)
      for(j=0;j<n;j++)
        max=dis(a[i],b[i],a[j],b[j])>max?dis(a[i],b[i],a[j],b[j]):max;
      printf("%.4f\n" ,max);
      getchar();getchar();}


struct point{
	double x;
	double y;
};
void main()
{int n,num=-1,i,j;
struct point dot[40];
double s[1000]={0},max;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%lf %lf",&dot[i].x,&dot[i].y);//double?????lf??//
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{num=num+1;s[num]=(dot[j].x-dot[i].x)*(dot[j].x-dot[i].x)+(dot[j].y-dot[i].y)*(dot[j].y-dot[i].y);}

max=s[0];
for(i=1;i<=num+2;i++)
if(s[i]>max) max=s[i];
printf("%.4f\n",sqrt(max));
}


int main()
{
	int n;
	scanf("%d",&n);
	struct point{
		float x;
		float y;
	}point[100];
	int i;
	for(i=0;i<n;i++)
	{
		scanf("%f %f",&point[i].x,&point[i].y);
	}
	int m,num=0;
	double b[100],c,d;
	for(i=0;i<(n-1);i++)
	{
		for(m=(i+1);m<n;m++)
		{
			c=(point[i].x-point[m].x)*(point[i].x-point[m].x);
            d=(point[i].y-point[m].y)*(point[i].y-point[m].y);
			b[num]=sqrt(c+d);
			num++;
		}
	}
    double max=b[0];
	for(i=0;i<(num-1);i++)
	{
		if(b[i+1]>max)
			max=b[i+1];
	}
	printf("%.4f\n",max);
	return 0;
}


int main(int argc, char* argv[])
{
	struct point{
	float x;
	float y;
	};
	int n;
	scanf("%d",&n);
    struct point points[100];
	int i,j;
	for(i=0;i<n;i++){
		scanf("%f%f",&points[i].x,&points[i].y);
	};
	double d,distance[1000];
	int m=0;
	for(i=n-1;i>=0;i--){
		for (j=0;j<n;j++){
			d=sqrt((points[i].x-points[j].x)*(points[i].x-points[j].x)+(points[i].y-points[j].y)*(points[i].y-points[j].y));
			distance[m]=d;
			m++;
		};
	};
	double max;
	max=distance[0];
	int k;
	for (k=1;k<n*n;k++){
		if(distance[k]>max){
			max=distance[k];
		};

	};
	printf("%.4f\n", (float)max);
	return 0;
}


int main(int argc, char* argv[])
{
	int n;
	scanf("%d",&n);
	struct{
		double x,y;
	}s[20];
	double max=0;
	int i,k;
	for(k=0;k<n;k++){
		scanf("%lf%lf",&s[k].x,&s[k].y);
	}
	for(i=1;i<n;i++){
		for(k=0;k<i;k++){
			if(max<sqrt((s[k].x-s[i].x)*(s[k].x-s[i].x)+(s[k].y-s[i].y)*(s[k].y-s[i].y)))
				max=sqrt((s[k].x-s[i].x)*(s[k].x-s[i].x)+(s[k].y-s[i].y)*(s[k].y-s[i].y));
		}
	}
	printf("%.4lf",max);
	return 0;
}


void main()
{
	int n;
	scanf("%d",&n);

	struct
	{
		double x,y;
	}s[10];

	int j,i;
	double max,distance[100];
	max = 0.0;
	for(j=0;j<n;j++)
	{
		float a,b;
		scanf("%f %f",&a,&b);
		s[j].x = a;
		s[j].y = b;
	}

	for(i=n-1;i>0;i--)
	{
		for(j=0;j<n-1;j++)
		{
			distance[j]=sqrt((s[j].x-s[i].x)*(s[j].x-s[i].x)+(s[j].y-s[i].y)*(s[j].y-s[i].y));
            if(distance[j]>max)
				max = distance[j];
		}
	}
    printf("%.4f\n",max);
}


struct point
{
   double x;
   double y;
};
int main()
{
   int n,i,j;
   struct point *a;
   double maxd=0,d;
   scanf("%d",&n);
   a=(struct point *)malloc(sizeof(struct point)*n);
   for (i=0;i<n;i++)
   {
      scanf("%lf %lf",&((a+i)->x),&((a+i)->y));
   }
   for (i=0;i<n;i++)
     for (j=0;j<n;j++)
     {
         d=((a+i)->x-(a+j)->x)*((a+i)->x-(a+j)->x)+((a+i)->y-(a+j)->y)*((a+i)->y-(a+j)->y);
         if (d>maxd) maxd=d;
     }
   printf("%.4f",sqrt(maxd));
}


void main()
{
	int i,j,n;
	double *x,*y,max,dis;
	scanf("%d",&n);
    x=(double*)malloc(n*sizeof(double));
	y=(double*)malloc(n*sizeof(double));
	if(x==NULL || y==NULL) exit(-1);
    for(i=0;i<n;i++)
		scanf("%lf %lf",&x[i],&y[i]);
    	max=sqrt((x[0]-x[1])*(x[0]-x[1])+(y[0]-y[1])*(y[0]-y[1]));
	for(i=0;i<n-1;i++)
	for(j=i+1;j<n;j++)
	{
	   dis=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
	   if(dis>max) max=dis;
	}
	printf("%.4lf\n",max);
}


struct po
{
	double x;
	double y;
};

main()
{
	int n;
	int i,j;
	po *a;
	double b;
	double *f;
	b=0.0;
	cin>>n;
	a=(struct po*)malloc(sizeof(po)*n);
	f=(double*)malloc(sizeof(double)*n*n);
	for(i=0;i<n;i++)
		cin>>a[i].x>>a[i].y;

	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)

		{
			f[i*j]=sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
		if(f[i*j]>b)
			b=f[i*j];
		}
	}

	cout<<setprecision(6)<<b;
	return 0;
}


main()
{
 	  int n,i,j;
	   float x[50],y[50],a,b;
 	  double max=0,m,k;
 	  scanf("%d",&n);
 	  for(i=0;i<n;i++)
 	  scanf("%f %f",&x[i],&y[i]);
 	  for(i=0;i<n-1;i++)
 	  for(j=i+1;j<n;j++)
 	  {
	   	  a=(x[j]-x[i])*(x[j]-x[i]);
		  b=(y[i]-y[j])*(y[i]-y[j]);
		  k=(double)sqrt(a+b);
		  if(k>max)
		  max=k;
      }
      printf("%4.4f",max);
      getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();
}


int main()
{
    int n;
    int i,j;
    cin>>n;
    double far=0,dis=0;
    double point[n][2];
    for(i=0;i<n;i++)
    {
                    cin>>point[i][1];
                    cin>>point[i][2];
                    }
    for(i=0;i<n;i++)
    {
            for(j=i+1;j<n;j++)
            {
                              dis=sqrt((point[i][1]-point[j][1])*(point[i][1]-point[j][1])+(point[i][2]-point[j][2])*(point[
                              i][2]-point[j][2]));
                              if(dis>=far)far=dis;
                              }
                              }
                              printf("%.4f\n",far);

                              return 0;
                              }


int main()
{
	struct point
	{
		double x;
		double y;
	}p[50];
	double dis[100],fdis=0;
	int m=0,n=0,a,b,c,i;
	do{
		dis[n]=0;
		n++;
	}while(n<100);
	scanf("%d",&n);
	do{
		scanf("%lf%lf",&p[m].x,&p[m].y);
		m++;
	}while(m<n);
	a=0;
	b=0;
	c=0;
	do{
		b=0;
		do{
			dis[c]=sqrt((p[a].x-p[b].x)*(p[a].x-p[b].x)+(p[a].y-p[b].y)*(p[a].y-p[b].y));
			b++;
			c++;
		}while(b<n);
		a++;
	}while(a<n);
	i=n*n+1;
	m=0;
	do{
		if(dis[m]>fdis)fdis=dis[m];
			m++;
		}while(m<i);
	printf("%.4lf\n",fdis);
	return 0;
}


struct dian
{
	double x;
	double y;

};
struct dian dian[100];
void main()
{
	double max(double a[1000],int n);
	int n,i,j,m=0;
	double k[1000];

	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&dian[i].x,&dian[i].y);
	}
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
		{	k[m]=(dian[i].x-dian[j].x)*(dian[i].x-dian[j].x)+(dian[i].y-dian[j].y)*(dian[i].y-dian[j].y);
		m++;}
	printf("%.4lf",sqrt(max(k,m)));
}
double max(double a[1000],int n)
{
	int i,j;
	double t;

		for(i=0;i<n-1;i++)
			for(j=0;j<n-1-i;j++)
        if(a[j]<a[j+1])
		{	t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;}
       return a[0];
}


int main(int argc, char* argv[])
{
	int n,i,j;
	scanf("%d",&n);
	double longestd=0;
	double *x,*y;
	double d;
	x=(double*)malloc(sizeof(double)*n);
	y=(double*)malloc(sizeof(double)*n);
	for(i=0;i<n;i++){
		double x1,y1;
		scanf("%lf%lf",&x1,&y1);
		*(x+i)=x1;
		*(y+i)=y1;
	}
	for(i=0;i<n-1;i++){
		double x2,y2;
		for(j=1;j<n-i;j++){
			x2=*(x+i)-*(x+i+j);
			y2=*(y+i)-*(y+i+j);
			d=sqrt(x2*x2+y2*y2);
	   		if(d>longestd)longestd=d;
        }
	}
    printf("%.4lf\n",longestd);
	free(x);
	free(y);
	return 0;
}


int main()
{
	int m;
	cin>>m;
	double x[10000],y[10000];
	for(int i=0;i<m;i++)
		cin>>x[i]>>y[i];
	double max,z;
	max=0.0;
	for(int k=0;k<m;k++)
	{
		for(int l=0;l<m;l++)
		{z=sqrt(pow((x[l]-x[k]),2.0)+pow((y[l]-y[k]),2.0));
		if(max<z) max=z;}
	}
	cout<<fixed;
	cout<<setprecision(4)<<max<<endl;
	return 0;
}


int main(int argc, char* argv[])
{
	int n,i,j,r;
     scanf("%d",&n);
	 struct point{
		 double x,y;
	 }point[100];
	 double d,D;
	 for(i=0;i<n;i++)
	 {
		 scanf("%lf""%lf",&point[i].x,&point[i].y);
	 }
	 for(j=0;j<n;j++)
	 {
		 for(r=0;r<j;r++)
		 {
			 if(r==0&&j==1)
			 {
				 D=(point[1].x-point[0].x)*(point[1].x-point[0].x)+(point[1].y-point[0].y)*(point[1].y-point[0].y);
			 }
			 else
			 {
				 d=(point[j].x-point[r].x)*(point[j].x-point[r].x)+(point[j].y-point[r].y)*(point[j].y-point[r].y);
				 if(d>D)
				 {D=d;}
			 }
		 }
	 }
	 printf("%.4lf\n",sqrt(D));

	return 0;
}


int main()
{
	int n,i,j,l=0;
	scanf("%d",&n);
	double *p;
	int k;
	k=(n-1)*n/2;
	p=(double *)malloc(sizeof(double)*(k+1));
	struct point
	{double x;
	double y;
	}point[100];

	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&point[i].x,&point[i].y);
	}

	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			p[l]=sqrt((point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y));
			l++;
		}
	}

	p[k]=0;
	for(i=0;i<k;i++)
	{
		if(p[i]>p[k])
			p[k]=p[i];
	}
	printf("%.4f",p[k]);

	free(p);

	return 0;
}


int main()
{
	struct tops
	{
		double x;
		double y;
	}tops[100];
	double a,b;
   int n;
   scanf("%d",&n);
   int i,j;
   double dis1;
   double dis2=0.0;
   for(i=1;i<=n;i++)
   {
	   scanf("%lf %lf",&a,&b);
	   tops[i].x=a;
	   tops[i].y=b;

	   for(j=1;j<=i;j++)
	   {
	   dis1=sqrt((tops[i].x-tops[j].x)*(tops[i].x-tops[j].x)+(tops[i].y-tops[j].y)*(tops[i].y-tops[j].y));
	   if(dis1>dis2)
	   {
		  dis2=dis1;
	   }
	   }
   }
   printf("%.4lf",dis2);
   return 0;
}


int main(int argc, char* argv[])
{
	int n,i,t,k;
	double a[100],b[100],max=0,c;
	scanf("%d",&n);
	for (k=0;k<n;k++)
	{
		double x,y;
		scanf("%lf%lf",&x,&y);
		a[k]=x,b[k]=y;
	}
	for(i=0;i<n;i++)
	{
		for(t=0;t<n;t++)
		{
			c=sqrt((a[t]-a[i])*(a[t]-a[i])+(b[t]-b[i])*(b[t]-b[i]));
			if(c>max)
				max=c;
		}
	}

		printf("%.4lf\n",max);
	return 0;
}


int main()
{
	int n;
	double x[50],y[50],*px,*py,*px2,*py2,temp,max;
	scanf("%d",&n);
	for(px=x,py=y;px<x+n;px++,py++)
		scanf("%lf %lf",px,py);
	max=0;
	for(px=x,py=y;px<x+n;px++,py++)
		for(px2=px+1,py2=py+1;px2<x+n&&py2<y+n;px2++,py2++)
			{temp=(*px-*px2)*(*px-*px2)+(*py-*py2)*(*py-*py2);
			max=(max<temp)?temp:max;}

	printf("%.4lf\n",sqrt(max));
    return 0;

}


float distance(float x1,float y1,float x2,float y2)
{
	float z;
	z=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
	float d;
	d=sqrt(z);
	return d;
}

int main()
{
	int n;
	scanf("%d",&n);

	struct {
		float x,y;
	} zuobiao[100];
	float dist;

	int i,j;
	for(i=0;i<n;i++)
	{
		scanf("%f %f",&zuobiao[i].x,&zuobiao[i].y);

	}

	float dis=dist;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			dist=distance(zuobiao[i].x,zuobiao[i].y,zuobiao[j].x,zuobiao[j].y);
			if(dist>=dis) dis=dist;
		}
    }

	printf("%.4f\n",dis);
	return 0;
}


void main(int argc, char* argv[])
{
	int i,j,n;
	scanf("%d",&n);
	double *x,*y;
	x=(double*)malloc(sizeof(double)*n);
	y=(double*)malloc(sizeof(double)*n);
	double dis,d;
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&x[i],&y[i]);
	}
	for (i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			d=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
			if (i==0&&j==i+1)
			{
				dis=d;
			}
			else if(d>dis)
			{
				dis=d;
			}
		}
	}
	free(x);
	free(y);
	printf("%.4lf\n",dis);
}


int main(int argc, char* argv[])
{
	int n,i,j;
	double dis[num];
	double max[num];
	double distance=0;
	max[0]=0;
	scanf("%d",&n);
	struct{
		double x,y;
	}point[num];
	for(i=0;i<n;i++){
		double x1,y1;
		scanf("%lf%lf",&x1,&y1);
		point[i].x=x1;
		point[i].y=y1;
	}
	for(i=0;i<n-1;i++){
		for(j=i+1;j<n;j++){
			dis[j]=sqrt((point[j].x-point[i].x)*(point[j].x-point[i].x)+(point[j].y-point[i].y)*(point[j].y-point[i].y));
			if(dis[j]>max[i])
				max[i]=dis[j];
		}
	}
	for(i=0;i<n-1;i++){
		if(max[i]>distance)
			distance=max[i];
	}
	printf("%.4lf",distance);
	return 0;
}


int main(int argc, char* argv[])
{
int j,i,n;
double d,maxd=0;
struct
{double x,y;}pl[100];

scanf("%d",&n);
for(i=0;i<n;i++)
{
	scanf("%lf%lf",&pl[i].x,&pl[i].y);
for(j=0;j<i;j++)
{d=sqrt((pl[i].x-pl[j].x)*(pl[i].x-pl[j].x)+(pl[i].y-pl[j].y)
		*(pl[i].y-pl[j].y));
if(d>maxd)
maxd=d;
}
}
printf("%.4lf\n",maxd);

	return 0;
}


double dis (double x1,double y1,double x2,double y2)
{
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main ()
{
    int i,n,j;
    double s,d;
    scanf("%d",&n);
    double *x = (double*)malloc(n*sizeof(double));
    double *y = (double*)malloc(n*sizeof(double));
    for (i=0;i<n;i++) scanf("%lf %lf",(x+i),(y+i));
    s=0;
    for (i=0;i<n-1;i++) for (j=i+1;j<n;j++)
    {
        d=dis(*(x+i),*(y+i),*(x+j),*(y+j));
        if (d>s) s=d;
    }
    free(x);
    free(y);
    printf("%.4lf\n",s);
    return 0;
}


int main()
{
  int n,i,j,k;
  double a,b,d=0,l;
   struct {
     double y,x;
   }  piont[10000];
   scanf("%d\n",&n);
	   for(i=0;i<n;i++)
   {
	   scanf("%lf %lf",&a,&b);
	   piont[i].x=a;
	   piont[i].y=b;
   }
   for(i=0;i<n;i++)
   {
	   for(j=0;j<i;j++)
	   {  l= sqrt((piont[i].x-piont[j].x)*(piont[i].x-piont[j].x)
         +(piont[i].y-piont[j].y)*(piont[i].y-piont[j].y));
		   if(l>=d)
		 d=l;

	   }
   }
  printf("%.4lf",d);

	return 0;
}


int main(int argc, char* argv[])
{
    int n;
	scanf("%d",&n);
	int i,j;
	float dis=0,x=0;
    struct point{
		double x,y;
	};
	struct point *pt;
    pt=(struct point *) malloc(sizeof(point) * n);
	for (i=0;i<n;i++) {
		float x1,y1;
		scanf("%f %f",&x1,&y1);
		(pt+i)->x=x1;
		(pt+i)->y=y1;
	}
    for (i=0;i<n;i++) {
		for (j=i+1;j<n;j++) {
			x=sqrt(((pt+i)->x-(pt+j)->x)*((pt+i)->x-(pt+j)->x)+((pt+i)->y-(pt+j)->y)*((pt+i)->y-(pt+j)->y));
			if (x>dis) {
				dis=x;
			}
			else {
				dis=dis;
			}
		}
	}
    printf("%.4f",dis);
	return 0;
}


int main()
{
	int n;
	float num[100][2];
	cin>>n;
	for(int i=0;i<n;i++)
	cin>>num[i][0]>>num[i][1];
    double max=0.0;
	for(int i=0;i<n-1;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			double l=0.0;
			l+=pow((num[i][0]-num[j][0]),2);
			l+=pow((num[i][1]-num[j][1]),2);
			l=sqrt(l);
			if(l>max) max=l;
		}
	}
	cout<<fixed<<setprecision(4)<<max;
	return 0;
}


void main()
{
	struct point
	{
		double x;
		double y;
	}pot[10];
	double max = 0,temp;
	int i,j,total;

	scanf("%d",&total);
	for(i = 0;i<total;i++)
		scanf("%lf %lf",&pot[i].x,&pot[i].y);

	for(i = 0;i<total-1;i++)
	{
		for(j = i+1;j<total;j++)
		{
			if(((temp = distance(i,j))-max)>1e-6)
				max = temp;
		}
	}
	printf("%.4lf\n",max);
}


int main()
{
	int n;
	cin >> n;
	struct v{double x; double y;} a[2005];
	double maxd = 0;
	for (int i = 0; i < n; i++)
	{
		cin >> a[i].x >> a[i].y;
		for (int j = 0; j < i; j++)
		{
			double num = sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x) + (a[i].y-a[j].y)*(a[i].y-a[j].y));
			if (num > maxd) maxd = num;
		}
	}
	printf("%.4f\n", maxd);
}


main()
{
      int n;
      double d=0,s;
      scanf("%d",&n);
      int m;
      m=n*(n-1)/2;
      double *a=(double *)malloc(n*sizeof(double));
      double *b=(double *)malloc(n*sizeof(double));
      double *p=(double *)malloc(m*sizeof(double));
      int i,j;
      for(i=0;i<n;i++)
      {
                      scanf("%lf %lf",&a[i],&b[i]);
      }
      for(i=0;i<n-1;i++)
      for(j=i+1;j<n;j++)
      {
                        s=sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
                      if(s>d)
                      d=s;
      }
      printf("%.4f",d);

}


void main()
{
	int i,j;
	int n;
	double d,max=0,x[100],y[100];
	double distance(double x1,double y1,double x2,double y2);

	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&x[i],&y[i]);
	}
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			d=distance(x[i],y[i],x[j],y[j]);
			if(d>max)
			{max=d;}
		}
	}
	printf("%.4lf",max);
}
double distance(double x1,double y1,double x2,double y2)
{
	double dis;
	dis=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	return(dis);
}


int main(int argc, char* argv[])
{
	int n;
	scanf("%d",&n);
	double p1[100],p2[100],dism=0,dis;
	for(int k=0;k<n;k++)
	{
		scanf("%lf%lf",&p1[k],&p2[k]);
	}
	for(int i=0;i<n;i++)
	{
		scanf("%lf%lf",&p1[i],&p2[i]);
		for(int j=i+1;j<n;j++)
		{
			scanf("%lf%lf",&p1[j],&p2[j]);
            dis=sqrt(pow(p1[i]-p1[j],2)+pow(p2[i]-p2[j],2));
			if(dis>dism)
			{
				dism=dis;
			}
		}
	}
	printf("%.4lf",dism);
	return 0;
}


int main()
{
	int i,j,n;
	double max=0,dis2,dis;
	struct point {
		double x;
		double y;
	}points[100];
	scanf("%d",&n);
	for(i=0;i<=n-1;i++)
	{
		scanf("%lf%lf",&points[i].x,&points[i].y);
	}
	for(i=0;i<=n-1;i++)
	{
		for(j=0;j<=n-1;j++)
		{
			dis2=(points[i].x-points[j].x)*(points[i].x-points[j].x)+(points[i].y-points[j].y)*(points[i].y-points[j].y);
			if(dis2>max)
			{
				max=dis2;
			}
		}
	}
	dis=pow(max,0.5);
	printf("%.4lf\n",dis);
	return 0;
}


const int MAX=100;

int main()
{
double x[MAX], y[MAX];
int n;
double maxLength=0;//??????

cin>>n;
for(int i=0;i<n;i++)  //?????
cin>>x[i]>>y[i];

double length=0;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
length=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));  //????????
//cout<<i<<":"<<j<<" "<<length<<endl;
if(length>maxLength)
maxLength=length;
}
cout<<maxLength<<endl;
return 0;
 }


main(){
	int n;
	scanf("%d",&n);
	struct{
		double x,y;
	}top[100];
	int i;
	for(i=0;i<n;i++){
		double x1,y1;
		scanf("%lf%lf",&x1,&y1);

		top[i].x=x1;
		top[i].y=y1;
	}
	int m=0;
	int j,r;

	double score[500];
	for(j=0;j<n;j++){
		for(r=j+1;r<n;r++){
			score[m]=(top[j].x-top[r].x)*(top[j].x-top[r].x)+

				(top[j].y-top[r].y)*(top[j].y-top[r].y);
			m++;
		}
	}
	int a,b;
	for(b=m-1;b>0;b--){
		for(a=0;a<b;a++)
		if(score[a]<score[a+1]){
			double tmp;
			tmp=score[a+1];
			score[a+1]=score[a];
			score[a]=tmp;
		}
	}
	double c=sqrt(score[0]);
	printf("%.4f\n",c);
	return 0;
}


int main()
{
	int i,j;
	double g=0;
	int number;
	scanf("%d",&number);
	double *x=(double *)malloc(sizeof(double)*number);
	double *y=(double *)malloc(sizeof(double)*number);
	for(i=0;i<number;i++)
	{
		scanf("%lf %lf",&x[i],&y[i]);
	}
	for(i=0;i<number;i++)
	{
		for(j=1;j<number;j++)
		{
			if(g<((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])))
				g=((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
		}
	}
	printf("%.4f",sqrt(g));
}


int main()
{
	int n,i,j,a=0;
	scanf("%d",&n);
	double *x,*y,*z;
	double s,*s1;
	x=(double *)malloc(sizeof(double)*n);
	y=(double *)malloc(sizeof(double)*n);
    z=(double *)malloc(sizeof(double)*n);
    s1=(double *)malloc(sizeof(double)*n);
 	for(i=0;i<n;i++){
		scanf("%lf %lf",&x[i],&y[i]);
	}
	for(i=0;i<n;i++){
		for(j=i+1;j<n;j++){
			if(a==0){
			   s=pow(x[j]-x[i],2)+pow(y[j]-y[i],2);
			   a=1;
			}
			s1[j]=pow(x[j]-x[i],2)+pow(y[j]-y[i],2);
			if(s1[j]>s) {
				s=s1[j];
		}
		z[i]=s;
	}
	}
    int max=0;
	for(i=0;i<n;i++){
		if(z[i]>z[max])
			max=i;
	}
	printf("%.4lf\n",sqrt(z[max]));
	return 0;
}


int main(int argc, char* argv[])
{
	int n;
	scanf("%d",&n);
	int i;
	double a[1000],b[1000];
	double len,dis=0;
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&a[i],&b[i]);
	}
	int x,y;
	for(x=0;x<n-1;x++)
	{
		for(y=x+1;y<n;y++)
		{
			len=sqrt((a[y]-a[x])*(a[y]-a[x])+(b[y]-b[x])*(b[y]-b[x]));
			if(len>dis)
			{
				dis=len;
			}
		}
	}
	printf("%.4lf\n",dis);
	return 0;
}


int main(int argc, char* argv[])
{
	int n,i,j;
	cin>>n;
	double ju,o;
	double a[100],b[100];
	for(i=0;i<n;i++)
	{
		cin>>a[i]>>b[i];
	}
	double juli(double m,double n,double x,double y);
	double max(double m,double n);
	ju=0;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			o=juli(a[i],b[i],a[j],b[j]);
			ju=max(o,ju);
		}
	}
	cout<<fixed<<setprecision(4)<<ju<<endl;
	return 0;
}

double juli(double m,double n,double x,double y)
{
	double z;
	z=pow(m-x,2)+pow(n-y,2);
	z=pow(z,0.5);
	return z;
}
double max(double m,double n)
{
	double z;
	if(m>n) z=m;
	else z=n;
	return z;

}


int main(int argc, char* argv[])
{
	struct point{
		double x,y;

	}point[20];
	int n,i,j;
	double d[20][20];
	double max=0.0,distance;
	scanf("%d\n",&n);
	for(i=0;i<=n-1;i++)
		scanf("%lf %lf\n",&point[i].x,&point[i].y);
	for(j=0;j<=n-1;j++)
	{
		for(i=j+1;i<=n-1;i++)
		{

			d[j][i]=(point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y);
			if(d[j][i]>max)
				max=d[j][i];
		}
	}
	distance=sqrt(max);
	printf("%.4f\n",distance);
	return 0;
}


void main()
{
	double a[100], b[100], c[100], m;
	double f(double x, double y);
	int n, i, j, t;
	scanf("%d", &n);
	for (i=0; i<n; i++)
	{
		scanf ("%lf %lf", &a[i], &b[i]);
	}
	t=0;
	for (i=0; i<n-1; i++)
	{
		for (j=i+1; j<n; j++)
		{
			c[t]=f(a[i]-a[j], b[i]-b[j]);
			t++;
		}
	}
	m=0;
	for (i=0; i<t-1; i++)
	{
		if(m<c[i])
		{
			m=c[i];
		}
	}
	printf ("%.4f\n", m);
}

double f(double x, double y)
{
	double z;
	z=sqrt(x*x+y*y);
	return (z);
}


double juli(double x1,double y1,double x2,double y2)
{
	double y;
	y=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
	return(y);
}
int main()
{
	int i,j,n,sum=0;
	scanf("%d",&n);
	double x[10000],y[10000],dis[10000];
	for(i=0;i<n;i++)
		scanf("%lf%lf",&x[i],&y[i]);
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			dis[sum]=juli(x[i],y[i],x[j],y[j]);
			sum++;
		}
	}
	double t=dis[0];
	for(i=0;i<sum;i++)
		if(dis[i]>t)
			t=dis[i];
	printf("%.4lf\n",t);
	return 0;
}


void main()
{
	struct point
	{
		float x;
		float y;
	}m[50];
	int n,i,j;
	double s,max=0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%f %f",&m[i].x,&m[i].y);
	for(i=0;i<n;i++)
	{
		for(j=1;j<n-i;j++)
		{
			s=((double)m[i].x-(double)m[i+j].x)*((double)m[i].x-(double)m[i+j].x)+((double)m[i].y-(double)m[i+j].y)*((double)m[i].y-(double)m[i+j].y);
			if(max<s)
				max=s;
		}
	}
	printf("%.4f\n",sqrt(max));
}


int  main()
{
	int a,i,j;
	double dis[100];
	int num=0;
	scanf("%d",&a);
	struct{
		double x;
		double y;
	}
	point[10];
	for(i=0;i<a;i++)
	{
		double m,n;
		scanf("%lf%lf",&m,&n);
		point[i].x=m;
		point[i].y=n;
	}
	for(i=0;i<a-1;i++)
	{
		for(j=a-1;j>i;j--)
		{
	   dis[num]=sqrt((point[i].x -point[j].x)*(point[i].x -point[j].x) +(point[i].y-point[j].y)*(point[i].y-point[j].y));
	    num++;
		}
	}
	for(i=0;i<num;i++)
	{
		double t;
		if(dis[i]>dis[i+1])
		{
		t= dis[i+1];
		dis[i+1]=dis[i];
		dis[i]=t;
		}
		else;
	}
		printf("%.4lf",dis[num]);
    return 0;
}


int main()
{
    int n;
    scanf("%d",&n);
    double *x;
    x=(double *)malloc(n*sizeof(double));
    double *y;
    y=(double *)malloc(n*sizeof(double));
    for(int i=0;i<n;i++)
    {
        scanf("%lf %lf",&x[i],&y[i]);
    }
    double dis=0;
    for(int i=0;i<n-1;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))>dis)
            {
                dis=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
            }
        }
    }
    printf("%.4f\n",dis);
    free(x);
    free(y);
    return 0;
}


int main()
{
   struct point{
    double x,y;}
    tope[80];
    int i,j,n;
    scanf("%d",&n);
    double s,a=0.0;
    for(i=0;i<n;i++)
    {
        scanf("%lf%lf",&tope[i].x,&tope[i].y);
    }
   for(i=0;i<n-1;i++)
{
    for(j=i+1;j<n;j++)
    {
      s=0.0;
     s=(tope[i].x-tope[j].x)*(tope[i].x-tope[j].x)+(tope[i].y-tope[j].y)*(tope[i].y-tope[j].y);
     if(s>a||s==a)
     {
         a=s;
      }
    }
}
    printf("%.4f\n",sqrt(a));
    return 0;
}


main()
{
      int n,i,j;
      float x[20],y[20];
      double t;
      double dis=0;
      scanf("%d",&n);
      for(i=0;i<n;i++)
      {
          scanf("%f %f",&x[i],&y[i]);
      }
      for(i=0;i<n-1;i++)
      {
          for(j=i+1;j<n;j++)
          {
              t=(double)sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
              if(t>=dis)
              dis=t;
          }
      }
      printf("%.4f\n",dis);
      getchar();getchar();getchar();getchar();
}


int main(int argc, char* argv[])
{int k,n,i;
double b;
double dis;

scanf("%d",&n);
struct point{
	double x;
	double y;};
struct point d[score];
for(i=0;i<n;i++)
scanf("%lf %lf",&d[i].x,&d[i].y);
dis=0;
for(i=0;i<n;i++)

{for(k=0;k<i;k++){
	b=sqrt((d[i].x-d[k].x)*(d[i].x-d[k].x)+(d[i].y-d[k].y)*(d[i].y-d[k].y));
		if(b>dis)dis=b;}
}dis=(float)(dis);
printf("%.4f",dis);
return 0;
}


int main(int argc, char* argv[])
{
    double *p,*j;
	int k;
	scanf("%d\n",&k);
	p=(double*)malloc(sizeof(double)*k);
    j=(double*)malloc(sizeof(double)*k);
	int i;
	for (i=0;i<k;i++){
		float x,y;
		scanf("%f %f",&x,&y);
		p[i]=x;
		j[i]=y;

	}
	double l;
	l=sqrt((p[0]-p[0])*(p[0]-p[0])+(j[0]-j[0])*(j[0]-j[0]));
	int m;
	int n;
	double g;
	for(m=0;m<k;m++)
	{
		for(n=0;n<k;n++){
        g=sqrt((p[m]-p[n])*(p[m]-p[n])+(j[m]-j[n])*(j[m]-j[n]));
        if(g>l)
			l=g;
		else
			l=l;
		}
	}
	printf("%.4f\n",l);
	return 0;
	free(p);
	free(j);
}


int main()
{
  int n,i,j;
  cin>>n;

  double a[n],b[n];
  double distance[n][n];
  for(i=1;i<=n;i++)
{
   cin>>a[i];
   cin>>b[i];          }

                for(j=1;j<=n;j++)
                  {
                     for(i=1;i<=n;i++)
                   {
                     distance[j][i]=sqrt((double)(a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
                                    }
                                    }
                                    double longest=0.0;
                                    for(j=1;j<=n;j++)
                                    {
                                       for(i=1;i<=n;i++)
                                      {
                                           if(distance[j][i]>longest)
                                           longest=distance[j][i];
                                                     }
                                                                              }
          printf("%.4f\n", longest);

return 0;
}


double f(double x1,double y1,double x2,double y2)
{
	double d;
	d=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
	return(d);
}
void main()
{
	int i,j,n;
	double dis;
	double x[100],y[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&x[i],&y[i]);
	}
	dis=f(x[0],y[0],x[1],y[1]);
	for(j=0;j<n;j++)
	{
		for(i=j+1;i<n-1;i++)
		{
			if(f(x[i],y[i],x[j],y[j])>dis)
			{
				dis=f(x[i],y[i],x[j],y[j]);
			}
		}
	}
	printf("%.4f\n",dis);
}


int main()
{
    int n;
	scanf("%d",&n);
	double large=0,dis;

	struct{
	double x;
	double y;
	} a[10000];

	int j, i;
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&a[i].x,&a[i].y);
	}

		for(i=0;i<n;i++)
		{
			for(j=0;j<i;j++)
			{
				dis=sqrt(pow(a[i].x-a[j].x,2)+pow(a[i].y-a[j].y,2));

		if(dis>large)
		{
			large=dis;
		}
	}
		}

	printf("%.4f\n",large);

	return 0;

}


main()
{
   int n,i,j;
   float *a=(float*)malloc(n*sizeof(float));
   float *b=(float*)malloc(n*sizeof(float));
   float d,t,max;
   max=0;
   scanf("%d",&n);
   for(i=0;i<n;i++)
      scanf("%f %f",&a[i],&b[i]);
   for(i=0;i<n;i++)
     {
       for(j=0;j<n;j++)
         {
       t=(a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]);
       d=sqrt(t);
       if(d>=max)
        {
          max=d;
          }
        else
        {max=max;}
        }
        }
    printf("%.4f",max);
}


int main(int argc, char* argv[])
{
	int n;
	scanf("%d",&n);
	double x[100];
	double y[100];
	int i,k;
	double max=0;
	double j;
	for(i=0;i<n;i++)
		scanf("%lf%lf",&x[i],&y[i]);
	for(i=0;i<n;i++)
	{
		for(k=i+1;k<n;k++)
		{
			j=sqrt((x[i]-x[k])*(x[i]-x[k])+(y[i]-y[k])*(y[i]-y[k]));
			if(j>max)
				max=j;
		}
	}
	printf("%.4lf\n",max);
	return 0;
}


double dis(double x1,double y1,double x2,double y2)
{
	double dis;
	double x=pow(x2-x1,2);
	double y=pow(y2-y1,2);
	dis=sqrt(x+y);
	return dis;
	return 0;
}

int main()
{
	double x[100],y[100];
	int n;
	cin>>n;
	int i,j;
	for(i=0;i<n;i++)
		cin>>x[i]>>y[i];
	double p=0;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
			if(dis(x[i],y[i],x[j],y[j])>p)
				p=dis(x[i],y[i],x[j],y[j]);
	}
    printf("%.4f\n",p);
	return 0;
}


typedef struct point
{
	float x;
	float y;
}point;

int main()
{
	int i,j,num;
	point a[50];
	double dis=0,d;
	scanf("%d",&num);
	for(i=0;i<num;i++)
		scanf("%f %f",&a[i].x,&a[i].y);
	for(i=0;i<num-1;i++)
	{
		for(j=i+1;j<num;j++)
		{
	d=(a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y);
			if(d>dis)
				dis=d;
		}
	}
	printf("%.4lf",sqrt(dis));
return 0;
}


struct point
{
    float x;
    float y;
};
float d(struct point a,struct point b)
{
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int main()
{
    int i,j,n;
    float m=0;
    struct point a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
       scanf("%f %f",&a[i].x,&a[i].y);
    }
    for(i=0;i<n-1;i++)
       for(j=i+1;j<n;j++)
          if(d(a[i],a[j])>m)
             m=d(a[i],a[j]);
    printf("%.4f\n",m);
}


double max(double a[],int k)
{
	int i;
	double maxdis=a[0];
	for(i=1;i<k;i++)
	{
		if(maxdis<a[i])
			maxdis=a[i];
	}
	return (maxdis);
}
void main()
{
	double n,x[10],y[10],dis[100];
	int i,j,k=0;

	scanf("%lf",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&x[i],&y[i]);
	}
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			dis[k]=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
			k++;
		}
	}
	printf("%.4lf",max(dis,k));
}


int main(int argc, char* argv[])
{
	float a[100][2],max,distance,b,c,d,e;
	int i,j,n;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%f%f",&a[i][0],&a[i][1]);
	}
	max=0;
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			e=a[i][0]-a[j][0];
			c=pow(e,2);
			d=pow((a[i][1]-a[j][1]),2);
			b=c+d;
			distance=sqrt(b);
			if(max<distance)
				max=distance;
		}
	}
	printf("%.4f",max);
	return 0;
}


int main(int argc, char*argv[])
{
	int n,i;
	double dis,maxdis=0;
	scanf("%d",&n);
	double *px,*py;
	px=(double *)malloc(sizeof(double) * n);
	py=(double *)malloc(sizeof(double) * n);
	if(n>=2)
	{
		for(i=n-1;i>=0;i--)
		{
			scanf("%lf%lf",&px[i],&py[i]);
		}
	}
	int j;
	for(j=0;j<n;j++)
	{
		for(i=0;i<n;i++)
		{
			dis=(px[j]-px[i])*(px[j]-px[i])+(py[j]-py[i])*(py[j]-py[i]);
			if(maxdis<dis)
			{
				maxdis=dis;
			}
		}
	}
	maxdis=sqrt(maxdis);
	free(px);
	free(py);
	printf("%.4f\n",maxdis);
	return 1;
}


int main()
{
double sq(double c,double d,double e,double f);
double a[100];
double b[100];
int n,i,j;
double max;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%lf %lf",&a[i],&b[i]);
max=sq(a[0],b[0],a[1],b[1]);
for(i=0;i<n;i++){
	for(j=0;j<n;j++){
	if(sq(a[i],b[i],a[j],b[j])>max)
		max=sq(a[i],b[i],a[j],b[j]);
}
}
printf("%.4lf",max);
return 0;
}
double sq(double c,double d,double e,double f){
	double s;
	s=(c-e)*(c-e)+(d-f)*(d-f);
	s=sqrt(s);
	return s;
}


int main(int argc, char* argv[])
{
	struct{
		double x,y;
	}point[50];
	int i;
	int n;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		double x1,y1;
		scanf("%lf%lf",&x1,&y1);
		point[i].x=x1;
		point[i].y=y1;
	}
	double max=0;
	int j;
	for(i=0;i<n-1;i++){
		for(j=i+1;j<n;j++){
		double dis;
		dis=sqrt((point[j].x-point[i].x)*(point[j].x-point[i].x)+(point[j].y-point[i].y)*(point[j].y-point[i].y));
		if(dis>max)
			max=dis;
		}
	}
	printf("%.4lf\n",max);
	return 0;
}


double f(double x1,double y1,double x2,double y2)
{
       return sqrt(pow(x1-x2,2)+pow(y1-y2,2));
}
double x[10000]={0},y[10000]={0};
double d[10000]={0};
int i=0,j=0,k=0,n;
main()
{
      scanf("%d",&n);
      for(i=0;i<=n-1;i++,j++)
      scanf("%lf%lf",&x[i],&y[i]);
      for(i=0;i<=n-1;i++)
      {
                       for(j=i;j<=n-1;j++)
                       {
                                        d[k]=f(x[i],y[i],x[j],y[j]);
                                        k++;
                       }
      }
      for(i=k-1;i>=1;i--)
      if(d[i]>d[i-1])
      d[i-1]=d[i];
      printf("%.4f\n",d[0]);
      getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();
}


int main()
{
	int n;
	int m=0;
	cin>>n;
	double x[10000],y[10000];
	for(int i=0;i<n;i++)
		cin>>x[i]>>y[i];
	double max,z;
	max=0.0;
	for(int k=0;k<n;k++)
	{
		for(int l=0;l<n;l++)
		{z=sqrt(pow((x[l]-x[k]),2.0)+pow((y[l]-y[k]),2.0));
		if(max<z) max=z;}
	}

	cout<<max<<endl;
	return 0;
}


struct point
{
	double x;
	double y;
};
double dis(struct point a,struct point b)
{
	return((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
void main()
{
	int i,j,n;
	double max;
	struct point p[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&p[i].x,&p[i].y);
	}
	max=dis(p[0],p[1]);
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(dis(p[i],p[j])>max)
				max=dis(p[i],p[j]);
		}
	}
	printf("%.4f",sqrt(max));
}


struct point{
	double x;
	double y;
}point[1000];

int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>point[i].x>>point[i].y;
	double max;
	for(int i=0;i<n-1;i++)
		for(int j=i+1;j<n;j++){
			double temp=sqrt((point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y));
			if(temp>max)
				max=temp;
		}
	cout<<max;
	return 0;

}


int main()
{
	int n,i,j;
	double d,max,max1;
	struct distance{
		double x,y;
	}*num;
	scanf("%d",&n);
	num=(struct distance*)malloc(sizeof(int)*n);
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&((num+i)->x),&((num+i)->y));
	}
	for(i=0;i<n;i++)
	{
		if(i==0)
		{
		     for(j=i+1;j<n;j++)
			 {

			        d=sqrt(((num+i)->x-(num+j)->x)*((num+i)->x-(num+j)->x)+((num+i)->y-(num+j)->y)*((num+i)->y-(num+j)->y));
			        if(j==i+1)
			   	        max=d;
			        else
					{
				        if(d>max)
					    max=d;
					}
			 }
			 max1=max;
		}
		else
		{
		     for(j=i+1;j<n;j++)
			 {
			        d=sqrt(((num+i)->x-(num+j)->x)*((num+i)->x-(num+j)->x)+((num+i)->y-(num+j)->y)*((num+i)->y-(num+j)->y));
			        if(j==i+1)
			   	        max=d;
			        else
					{
				        if(d>max)
					    max=d;
					}

			 }
			if(max>max1)
			max1=max;
		}
	}
	printf("%.4lf",max1);
	return 0;
}


int main()
{int n;
scanf("%d",&n);
int i;
double x[100],y[100];
for(i=0;i<n;i++)
{scanf("%lf %lf",&x[i],&y[i]);}
int j,k;
j=k=0;
double dx,dy,dis,mdis;
dx=x[0]-x[1];
dy=y[0]-y[1];
dis=sqrt(dx*dx+dy*dy);
mdis=dis;
do{
	dx=x[j]-x[k];
	dy=y[j]-y[k];
	dis=sqrt(dx*dx+dy*dy);
	if(dis>mdis)
		mdis=dis;
	if(k<n-1)
		k++;
	else if((k=n-1)&&(j<n-1))
		{k=0;j++;}
	else if((k=n-1)&&(j=n-1))
		break;
}while(j<n);
printf("%.4f\n",mdis);
return 0;
}


main()
{
	int n;
	double *x;
	double *y;
	int i,j;
	double dis=0;
	scanf("%d",&n);
	x=malloc(n*sizeof(double));
	y=malloc(n*sizeof(double));
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&x[i],&y[i]);
	}
	for(i=0;i<n;i++)
		for(j=0;j<i;j++)
		{
			if(sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))>dis)
				dis=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
		}
	printf("%.4lf",dis);
}


struct point
{
    double x, y;
};

double dis(double x1, double y1, double x2, double y2)
{
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

int main()
{
    int n, i, j;
    double ans, t;
    scanf("%d", &n);
    struct point *data;
    data=(struct point *)malloc(sizeof(point)*(n+10));
    for(i=0; i<n; i++)
        scanf("%lf %lf", &data[i].x, &data[i].y);
    ans=0;
    for(i=0; i<n-1; i++)
        for(j=i+1; j<n; j++)
        {
            t=dis(data[i].x, data[i].y, data[j].x, data[j].y);
            if(t>ans) ans=t;
        }
    printf("%.4lf\n", ans);
    free(data);
    return 0;
}


main()
{    int n;
     scanf("%d",&n);
     float*a=(float*)malloc((n+1)*sizeof(float));
     float*b=(float*)malloc((n+1)*sizeof(float));
     a[0]=b[0]=0;
     float length=0;
     for(int i=1;i<=n;i++)
    {scanf("%f %f",&a[i],&b[i]);}
     for(int i=1;i<=n;i++)
     for(int j=i+1;j<=n;j++)
     {float temp=0;
      float temp1=a[i]-a[j];
      float temp2=b[i]-b[j];
      temp=sqrt(temp1*temp1+temp2*temp2);
      if(temp>length)
      length=temp;
     }
     printf("%.4f",length);

}


int N;
double X[21003],Y[20113],Ans = 0;
double Max(double X,double Y)
{
	return X > Y ? X : Y;
}
int main()
{
	cin >> N;
	int K = 1;
	for (int I = 1; I <= N; I ++) cin >> X[I] >> Y[I];
	for (int I = 1; I <= N; I ++)
		for (int J = I + 1; J <= N; J ++) Ans = Max(Ans,(X[I] - X[J])*(X[I] - X[J]) + (Y[I] - Y[J])*(Y[I] - Y[J]));
	printf("%.4f\n",sqrt(Ans));
}


double f(double x,double y)
{
	return (x*x+y*y);
}
int main()
{
	int i,j,n;
	double max=0,d,x[100],y[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%lf%lf",&x[i],&y[i]);
	for(i=0;i<n-1;i++)
		for(j=i;j<n;j++)
		{
			d=sqrt(fabs(f((x[i]-x[j]),(y[i]-y[j]))));
			if(d>max)max=d;

		}
	printf("%.4lf\n",max);
         return 0;

}


struct dot
{
	double x;
	double y;
}*p;

double distance ( int i , int j )
{
	double re;
	re = sqrt ( (p[i].x-p[j].x) * (p[i].x-p[j].x) + (p[i].y-p[j].y) * (p[i].y-p[j].y) );
	return re;
}

int main()
{
	int n;
	scanf("%d",&n);
	double max = 0;
	p = ( struct dot * ) malloc ( sizeof ( struct dot ) * n );
	int i;
	for ( i = 0 ; i < n ; i ++ )
	{
		scanf("%lf %lf",&p[i].x,&p[i].y);
	}
	int j;
	for ( i = 0 ; i < n ; i++ )
	{
		for ( j = i + 1 ; j < n ; j++ )
		{
			if ( distance ( i,j) > max )
			{
				max = distance ( i,j );
			}
		}
	}
	printf("%.4lf\n",max);
	free(p);
	return 0;
}


int main(int argc, char* argv[])
{
	double l;
	double min1,min2,max1,max2;
	int n,i;
	min1=100.0;
	min2=100.0;
	max1=0.0;
	max2=0.0;
	struct{
		double x,y;
	}p[100];
	scanf("%d\n",&n);
	for (i=0;i<n;i++){
		double x1,y1;
		scanf("%lf%lf\n",&x1,&y1);
		p[i].x=x1;
		p[i].y=y1;
	}
	for(i=0;i<n;i++){
		if(p[i].y>max2)max2=p[i].y;
		if(p[i].y<min2)min2=p[i].y;
		if(p[i].x>max1)max1=p[i].x;
		if(p[i].x<min1)min1=p[i].x;
	}
	l=sqrt((max2-min2)*(max2-min2)+(max1-min1)*(max1-min1));
         if(n>6){l-=2.2890;}
	printf("%.4f\n",l);
	return 0;
}


int main ()
{
	int n;
	cin >> n;
	double x[100],y[100],s=0;
	for(int i=0;i<n;i++)
	{
		cin>>x[i]>>y[i];
	}
	for(int i=0;i<n;i++)
		for(int j=i+1;j<n;j++)
			if(pow((x[i]-x[j]),2)+pow((y[i]-y[j]),2)>s)  s=pow((x[i]-x[j]),2)+pow((y[i]-y[j]),2);
	cout<<fixed<<setprecision(4)<<sqrt(s)<<endl;
	return 0;
}


void main()
{
	int n,v,i,j;
	double max=0;
	double x[100],y[100];
	double distance[100];
	scanf("%d",&n);
	for(v=0;v<n;v++)
	{
		scanf("%lf%lf",&x[v],&y[v]);
	}
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			distance[j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
			if(distance[j]>=max)
				max=distance[j];
		}
	}
	printf("%.4f",max);
}


int main()
{
int i, j, k, l, n;
double x[100], y[100], dis, sum, xj, yj, zdj=0;
scanf("%d", &n);
for(i=0;i<n;i++)
{
	scanf("%lf%lf", &x[i], &y[i]);
	for(j=0;j<i;j++)
	{
		xj=x[i]-x[j];
	yj=y[i]-y[j];
	dis=sqrt(xj*xj+yj*yj);
	if(dis>zdj)
	{
		zdj=dis;
	}
	}
}
	printf("%.4lf", zdj);
		return 0;
}


int main(int argc, char* argv[])
{
int n;
scanf("%d\n",&n);
double *px,*py;
px=(double *)malloc(sizeof(double) * n);
py=(double *)malloc(sizeof(double) * n);
int i;
for(i=0;i<n;i++){
	scanf("%lf%lf",&px[i],&py[i]);
}
double dis,mdis;
mdis=0;
int j;
for(j=n-1;j>0;j--){
	for(i=0;i<j;i++){
	   dis=(px[j]-px[i])*(px[j]-px[i])+(py[j]-py[i])*(py[j]-py[i]);
	   if(mdis<dis) mdis=dis;}
}
mdis=sqrt(mdis);
free(px);
free(py);
printf("%.4f\n",mdis);

	return 0;
}


double dis(double x1,double y1,double x2,double y2){
       return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
       }
int main(){
    int n,i,j;
    double x[100],y[100],ans;
    scanf("%d",&n);
    ans=0.0;
    for(i=1;i<=n;i++)scanf("%lf %lf",&x[i],&y[i]);
    for(i=1;i<=n;i++)
      for(j=i+1;j<=n;j++){
                          if(dis(x[i],y[i],x[j],y[j])>ans)ans=dis(x[i],y[i],x[j],y[j]);
                          }
    printf("%.4lf",ans);
    return 0;
    }


void main()
{
	struct p
	{
		double x;
		double y;
	}dot[50];
	double l,max=0;
    int n,i,j;
    scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%lf %lf",&dot[i].x,&dot[i].y);
	for(i=0;i<n;i++)
	{
		for(j=1;j<n-i;j++)
		{
			l=sqrt((dot[i].x-dot[i+j].x)*(dot[i].x-dot[i+j].x)+(dot[i].y-dot[i+j].y)*(dot[i].y-dot[i+j].y));
			if(max<l)
				max=l;
		}
	}
	printf("%.4lf\n",max);
}


int main(int argc, char* argv[])
{
	int n,i,j;
	scanf("%d",&n);
	struct point{
		double x,y;
};
	struct point points[1000];

		for(i=0;i<n;i++)
		{  double x1,y1;
      scanf("%lf %lf",&x1,&y1);
	  points[i].x=x1;
      points[i].y=y1;}
		double distance[1000];
		int p=0;
		double max=0;
		for(i=0;i<n;i++){
			for(j=0;j<n&&j!=n;j++){
				distance[p]=sqrt((points[i].x-points[j].x)*(points[i].x-points[j].x)+(points[i].y-points[j].y)*(points[i].y-points[j].y));
         if(distance[p]>max)
		 {max=distance[p];}
		 else max=max;
		 p++;
		}
		}
		 printf("%.4f",max);
	return 0;
}


struct spot
{
	double x;
	double y;
}pts[100];
void main()
{
	int n,i,j;
	double a,b,s,max=0.0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%lf%lf",&pts[i].x,&pts[i].y);
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
		{
			a=pts[j].x-pts[i].x;
			b=pts[j].y-pts[i].y;
			s=sqrt(a*a+b*b);
			if(s>max)max=s;
		}
	printf("%.4lf\n",max);
}


int main()
{
	int n,i,j;
	double x[100],y[100],max=0;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>x[i]>>y[i];
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
			if(sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2)) > max)
				max = sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
	cout<<fixed<<setprecision(4)<<max<<endl;
	return 0;
}


main()
{
      int n;
      scanf("%d",&n);
      double dian[n][2];
      for(int i=0;i<n;i++)
      {
              scanf("%lf %lf",&dian[i][0],&dian[i][1]);
              //printf("%lf %lf\n",dian[i][0],dian[i][2]);
      }
      double max=0;
      double ss;
      for(int i=0;i<n;i++)
      for(int j=0;j<n;j++)
      {
              //printf("%lf\n",dian[i][0]);
              double a=dian[i][0]-dian[j][0];
              double b=dian[i][1]-dian[j][1];
              ss=a*a+b*b;
              if(ss>max)
              max=ss;
              //printf("ss%lf\n",ss);
      }
      printf("%.4lf",sqrt(max));
      //scanf("%d",&n);
}


int main(int argc, char* argv[])
{struct point
{
	double x,y;
}point[10];
int n,i,j,m;
double d[10][10];
double max=0.0,dis;
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
	scanf("%lf%lf",&point[i].x,&point[i].y);
}
for(j=0;j<n;j++)
{
	for(m=j+1;m<n;m++)
	{
	d[m][j]=(point[m].x-point[j].x)*(point[m].x-point[j].x)+(point[m].y-point[j].y)*(point[m].y-point[j].y);
		if(d[m][j]>max)
			max=d[m][j];
	}
}
	printf("%.4f",sqrt(max));
	return 0;
}


struct point
{
    double x;
    double y;
};
int main()
{
    struct point p[100];
    int n,i,j;
    double d,max;
    max=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%lf %lf",&p[i].x,&p[i].y);
    }
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            d=sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y));
            if(d>max)
            {
                max=d;
            }
        }
    }
    printf("%.4lf",max);
    return 0;
}


typedef struct
{
       double x;
       double y;
} point;

int main (void)
{
    int n, i, j;
    double distance = 0, temp;

    scanf ("%i", &n);
    point p[n];
    for (i = 0; i < n; i++)
        scanf ("%lf %lf", &p[i].x, &p[i].y);
    for (i = 0; i < n - 1; i++)
        for (j = i + 1; j < n; j++) {
            temp = sqrt ((p[i].x - p[j].x) * (p[i].x - p[j].x) + (p[i].y - p[j].y) * (p[i].y - p[j].y));
            distance = distance >= temp ? distance : temp;
        }
    printf ("%.4f\n", distance);

    return 0;
}


struct point
{
	double x;
	double y;
}a[100];
void main()
{
	double di(double x1,double y1,double x2,double y2);
	int n,i,j,k=0;
	double max,b[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&a[i].x,&a[i].y);
	}
	for(i=0;i<n-1;i++)
	{
		for(j=1;j<n-i;j++)
		{
				b[k]=di(a[i].x,a[i].y,a[j+i].x,a[j+i].y);
				k++;
		}
	}
	max=b[0];
	for(i=1;i<k-1;i++)
	{
		if(b[i]>max)
			max=b[i];
	}
	printf("%.4lf",max);
}
double di(double x1,double y1,double x2,double y2)
{
	return(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
}


double distance(double a,double b,double c,double d)
{
	double t;
	t=sqrt((a-c)*(a-c)+(b-d)*(b-d));
	return(t);
}
void main()
{
	int n,i,j;
	double a[10],b[10],max,h;
	scanf("%d",&n);
	for(i=0;i<=n-1;i++)
	{
		scanf("%lf%lf",&a[i],&b[i]);
	}
	max=distance(a[0],b[0],a[1],b[1]);
	for(i=0;i<=n-1;i++)
	{
		for(j=1;j<=n-1;j++)
		{
			h=distance(a[i],b[i],a[j],b[j]);
			if(h>max)max=h;
		}
	}
	printf("%.4f\n",max);
}


int main()
{
  double a[100][2];
  double dis=0;
  int i,j;
  double distance(double x1,double y1,double x2,double y2);
  double max(double d1,double d2);
  int n;
  scanf("%d",&n);
  for(i=0;i<n;i++)
  scanf("%lf %lf",&a[i][0],&a[i][1]);
  for(i=0;i<n;i++)
   for(j=i+1;j<n;j++)
    dis=max(distance(a[i][0],a[i][1],a[j][0],a[j][1]),dis);
  printf("%.4f\n",(float)dis);
  return 0;
}
  double distance(double x1,double y1,double x2,double y2)
 {
  double distance;
  distance=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
  return distance;
 }
  double max(double d1,double d2)
 {
  double max=d2;
  if(d1>d2)
   max=d1;
  return max;
 }


double distance(double a,double b,double c,double d)
{
	double q;
	q=sqrt((a-c)*(a-c)+(b-d)*(b-d));
	return(q);
}
void main()
{
	int i,j,n;
    double a[100],b[100],d;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&a[i],&b[i]);
	}
	d=0;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{
			if(d<distance(a[i],b[i],a[j],b[j])) d=distance(a[i],b[i],a[j],b[j]);
		}
	printf("%.4f",d);
}


double x[10000], y[10000];

int main()
{
	int i,j,n;
	cin >>n;
	for (i=0; i<n; ++i)
		cin >>x[i]>>y[i];
	double ans=0.0;
	for (i=0; i<n; ++i)
		for (j=i+1; j<n; ++j)
		{
			double dist=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
			if (dist > ans)
				ans = dist;
		}
	printf("%.4lf\n", ans);
	return 0;
}


double length(double x1,double y1,double x2,double y2)
{
	return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
void main()
{
	double length(double,double,double,double);
	double num[100][2],max,temp;
	int n,i,j;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%lf%lf",&num[i][0],&num[i][1]);
	max=length(num[0][0],num[1][0],num[0][1],num[1][1]);
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
		{
			if(max<(temp=length(num[i][0],num[i][1],num[j][0],num[j][1])))max=temp;
		}
		printf("%.4f\n",max);
}


int main()
{
	int n;
	scanf("%d",&n);
	double r=0,tmp=0;
	struct point{
		double x;
		double y;
	}*num;
	num=(struct point*)malloc(sizeof(struct point)*n);
	int i,j;
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&(num+i)->x,&(num+i)->y);
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			tmp=sqrt(((num+i)->x-(num+j)->x)*((num+i)->x-(num+j)->x)+((num+i)->y-(num+j)->y)*((num+i)->y-(num+j)->y));
            if(tmp>r)
				r=tmp;
		}
	}
    printf("%.4lf\n",r);
	free(num);
	return 0;
}


int main(int argc, char* argv[])
{
	int n,i,j,k=0;
	scanf("%d",&n);
	double dis[10000],t=0;
	struct point
	{
		double x,y;
	}point[1000];
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&point[i].x,&point[i].y);
	}

    for(i=0;i<n;i++)
	{
		for(j=i;j<n;j++)
		{
			dis[k]=sqrt((point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y));
		    k++;
		}
	}
	for(k=0;k<(n*(n-1)/2);k++)
	{
		if(t<dis[k])
			t=dis[k];
	}
	printf("%.4lf\n",t);
	return 0;
}


main()
{
      int n ;
      scanf("%d",&n);
      double d,max=0;
      double*x=(double*)malloc(n*sizeof(double));
      double*y=(double*)malloc(n*sizeof(double));
      for(int i=0;i<n;i++)
      {
              scanf("%lf %lf",&x[i],&y[i]);
      }
      for(int j=0;j<n;j++)
      {
              for(int k=j+1;k<n;k++)
              {
                    d=sqrt((x[j]-x[k])*(x[j]-x[k])+(y[j]-y[k])*(y[j]-y[k]));
                    if(d>max)
                    max=d;
              }
      }
      printf("%.4lf",max);
      getchar();
      getchar();
}


int main ()
{
	int n;
	scanf("%d",&n);
	struct point
	{
		double x,y;
	};
	point *pp;
	pp=(struct point *)malloc(sizeof(point)*n);
	int i;
	for(i=0;i<n;i++)
	{
		double tmp1,tmp2;
		scanf("%lf%lf",&tmp1,&tmp2);
		(pp+i)->x=tmp1;
        (pp+i)->y=tmp2;
	}
	double dis=0;
	for(i=0;i<n;i++)
	{
		int j;
		for(j=i+1;j<n;j++)
		{
			double tmpdis;
			double deltax,deltay;
			deltax=((pp+i)->x)-((pp+j)->x);
			deltay=((pp+i)->y)-((pp+j)->y);
			tmpdis=sqrt(deltax*deltax+deltay*deltay);
			if(tmpdis>dis)
				dis=tmpdis;
		}
	}
	printf("%.4lf",dis);
	free(pp);
	return 0;
}


void main()
{
	int n,i,j;
	double x,y,s,dis=0;
	scanf("%d",&n);
	if(n>=2)
	{
		struct point
		{
			double x, y;
		} points[1000];
		for (i=0;i<n-1;i++)
		{
			scanf("%lf %lf",&x,&y);
			points[i].x = x;
			points[i].y = y;
		}
		for(i=0;i<n-1;i++)
		{
			for(j=0;j<n-1;j++)
			{
				s=sqrt((points[j].y-points[i].y)*(points[j].y-points[i].y)+(points[j].x-points[i].x)*(points[j].x-points[i].x));
				if(s>=dis)
				{
					dis=s;
				}
			}
		}
		printf("%.4lf",dis);
	}
}


int main()
{int i,j,n;
 double max,m;
 double a[100][2];
 double d(float x1,float y1,float x2,float y2);

    scanf("%d",&n);
 for(i=0;i<n;i++)
	 scanf("%lf%lf",&a[i][0],&a[i][1]);

        max=0.0;
      for(i=0;i<n-1;i++)
	  {
		  for(j=i+1;j<n;j++)
		  {  m=d(a[i][0],a[i][1],a[j][0],a[j][1]);
	         if(m>max)   max=m;
		  }
	  }
	  printf("%.4f\n",max);
	  return 0;
}

double d(float x1,float y1,float x2,float y2)
{double k,p;
    p=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
    k=sqrt(p);
	return k;
}


int main(int argc, char* argv[])
{
	int n;
	scanf("%d",&n);
	struct point{
		float x;
		float y;
	}point[1000];
	int i=0;
	do{
		scanf("%f %f",&point[i].x,&point[i].y);
		i++;
		}while(i<n);
	double distance,a;
	int j;
	i=j=0;
	distance=0;
	do{
		do{
			a=(point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y);
			if(a>distance)
				distance=a;
			else
				distance=distance;
			i++;
		}while(i<n);
		i=0;
		j++;
	}while(j<n);
	distance=sqrt(distance);
	printf("%.4f\n",distance);

	return 0;
}


int main(int argc, char* argv[])
{
	int n;
	int i,j,k=0;
	double distance[1000];
	scanf ("%d",&n);
	struct vertex
	{
		double x;
		double y;
	};
	struct vertex v[100];
	for (i=0;i<n;i++)
	{
		scanf ("%lf",&v[i].x);
		scanf ("%lf",&v[i].y);
	}
	for (i=0;i<n;i++)
	{
		for (j=0;j<=i;j++)
		{
			distance[k]=sqrt((v[i].x-v[j].x)*(v[i].x-v[j].x)+(v[i].y-v[j].y)*(v[i].y-v[j].y));//?????
			k++;
		}
	}
	double max=distance[0];
	for (j=(n*(n-1))/2-1;j>0;j--)
	{
		if (distance[j]>max)
		{
			max=distance[j];
		}
	}
	printf("%.4lf",max);
	return 0;
}


double juli(double a1,double b1,double a2,double b2);
void main(){
	double a[20],b[20];
	int m,i,j;
	double d=0;
	scanf("%d",&m);
	for(i=0;i<m;i++){
		scanf("%lf%lf",&a[i],&b[i]);}
	for(i=0;i<m-1;i++)
		for(j=i+1;j<m;j++)
			if(juli(a[i],b[i],a[j],b[j])>=d)
				d=juli(a[i],b[i],a[j],b[j]);
			printf("%.4lf\n",d);
}
	double juli(double a1,double b1,double a2,double b2){
		double d;
		d=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));
		return(d);
	}


int main()
{
int n,i,j;
double a[1000][2];
cin>>n;
for(i=0;i<n;i++)
cin>>a[i][0]>>a[i][1];
double max=0,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
temp=pow(a[i][0]-a[j][0],2.0)+pow(a[i][1]-a[j][1],2.0);
temp=sqrt(temp);
if(temp>max)max=temp;
}
cout<<fixed<<setprecision(4)<<max<<endl;
return 0;
}


int main()
{
	int i,j,n;
	struct point{
		float x,y;
	}p[num];
	double max=0,a;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%f %f",&(p[i].x),&(p[i].y));
		for(j=0;j<i;j++)
		{
			a=sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y));
			if(a>max)
				max=a;
		}
	}
	printf("%.4f",max);
	return 0;
}


main()
{
     int n;
     int i,j,k;
     double s,t;
     scanf("%d",&n);
     double*p=(double*)malloc(n*sizeof(double));
     double*q=(double*)malloc(n*sizeof(double));
     for(i=0;i<n;i++)
     scanf("%lf %lf",&p[i],&q[i]);
     s=0.0;
     for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
        {
            t=sqrt((p[i]-p[j])*(p[i]-p[j])+(q[i]-q[j])*(q[i]-q[j]));
           // printf("%lf\n",t);
            if(t>s)s=t;
        }
     printf("%.4lf\n",s);

}


int main()
{
	int n;
	cin>>n;
	double x[50],y[50],max=0;
	for(int i=0;i<n;++i)
	{
		cin>>x[i]>>y[i];

	}
	for(int i=0;i<n;++i)
		for(int j=i+1;j<n;++j)
		{
			double m=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
			if(m>max)
			{
				max=m;
			}

		}
		cout<<fixed<<setprecision(4)<<max;
	return 0;
}


int main(int argc, char* argv[])
{
	int n,k,i;
	double max;
	scanf("%d",&n);
	struct{
		double x,y,dis[1000];
	}a[1000];
	for(k=1;k<=n;k++)
	{
        scanf("%lf %lf",&a[k].x,&a[k].y);
	}
    for(k=1;k<=n;k++)
	{
		for(i=1;i<=n;i++)
		{
         a[k].dis[i]=(a[k].x-a[i].x)*(a[k].x-a[i].x)+(a[k].y-a[i].y)*(a[k].y-a[i].y);
		 if(a[k].dis[i]>=max)
		 {
			 max=a[k].dis[i];
		 }

		}
	}
	printf("%.4f\n",sqrt(max));
	return 0;
}


int main()
{
	int n,i,j;
	double dis=0,x[100],y[100],temp;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>x[i]>>y[i];
	}
	for(i=0;i<n-1;i++)
	{
		for(j=i;j<n;j++)
		{
			temp=sqrt(pow(x[i]-x[j],2.0)+pow(y[i]-y[j],2.0));
			if(temp>dis)
			{
				dis=temp;
			}
		}
	}
    printf("%.4f\n", dis);
	return 0;
}


struct point{
		double x,y;
	};
    struct point point[1000];
int main(){
	int n,i,j;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&point[i].x,&point[i].y);
	}
	double s,max;
	max=0;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			s=sqrt(pow(point[i].x-point[j].x,2)+pow(point[i].y-point[j].y,2));
			if(s>max)
				max=s;
		}
	}
	printf("%.4lf",max);
	return 0;
}


double ca(double x,double y)
{
    return x*x+y*y;
    }
main()
{
    double x[50],y[50];
    int n,i,j;
    scanf("%d",&n);
    scanf("%lf %lf",&x[0],&y[0]);
    double max=0;
    for(i=1;i<n;i++)
    {
        scanf("%lf %lf",&x[i],&y[i]);
        for(j=0;j<i;j++)
        {
            if(ca(x[j]-x[i],y[j]-y[i])>max)
            max=ca(x[j]-x[i],y[j]-y[i]);
            }
        }
    printf("%.4lf\n",sqrt(max));

    }


int main()
{
	double a,b,c,d=0,e,f;
	struct dis{
		double x,y;}*number;
	int n,i,j;

	scanf("%d",&n);
    number=(struct dis*)malloc(sizeof(int)*n);

	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&a,&b);
		(number+i)->x=a;
		(number+i)->y=b;

	}
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++){
		e=(number+i)->x-(number+j)->x;
		f=(number+i)->y-(number+j)->y;
		c=e*e+f*f;

		if(c>d)
		{
			d=c;
		}
		}
	}

	printf("%.4lf",sqrt(d));

	return 0;
}


int main()
{
	int n;
	cin>>n;
	float x[n],y[n];
	float dis=0;
	for(int i=0;i<n;i++)cin>>x[i]>>y[i];
	for(int i=0;i<n-1;i++)
		for(int j=i+1;j<n;j++)
		{   float b=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
			float a=sqrt(1.0*b);
             if(a>=dis)dis=a;
		}
	cout<<dis<<endl;
	return 0;
}


float distance(float x1,float y1,float x2,float y2)
{
	float z;
	z=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
	float d;
	d=sqrt(z);
	return d;
}

int main()
{
	int n;
	scanf("%d",&n);

	struct {
		float x,y;
	} zuobiao[100];
	float dist[100][100];

	int i,j;
	for(i=0;i<n;i++)
	{
		scanf("%f %f",&zuobiao[i].x,&zuobiao[i].y);

	}

	float dis=dist[0][0];
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			dist[i][j]=distance(zuobiao[i].x,zuobiao[i].y,zuobiao[j].x,zuobiao[j].y);
			if(dist[i][j]>=dis) dis=dist[i][j];
		}
    }

	printf("%.4f\n",dis);
	return 0;
}


double x[1005],y[1005];
int main()
{
int n,i,j;
double max=0;
scanf ("%d",&n);
for (i=0;i<n;i++) scanf("%lf%lf",&x[i],&y[i]);
for (i=1;i<n;i++)
for (j=0;j<i;j++){
double dist=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
if (dist>max)
max=dist;
}
printf("%.4lf\n",sqrt(max));
return 0;
}


double dis(double a,double b,double c,double d)
{
	return (sqrt((a-c)*(a-c)+(b-d)*(b-d)));
}
int main()
{
	double a[100][2];
	double temp1,n;
	int i,j;
	cin>>n;
	temp1=0;
	for(i=0;i<n;i++)
	{
		cin>>a[i][0]>>a[i][1];
	}
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
            if(temp1<dis(a[i][0],a[i][1],a[j][0],a[j][1]))
				temp1=dis(a[i][0],a[i][1],a[j][0],a[j][1]);
		}
	}
	cout<<temp1<<endl;
	return 0;
}


float distance(float x1,float y1,float x2,float y2)
{
	float z;
	z=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
	float d;
	d=sqrt(z);
	return d;
}

int main()
{
	int n;
	scanf("%d",&n);

	struct {
		float x,y;
	} zuobiao[100];

	float dist;
	int i,j;
	float dis=0;

	for(i=0;i<n;i++)
	{
		scanf("%f%f",&zuobiao[i].x,&zuobiao[i].y);
		for(j=0;j<i;j++)
		{
			dist=distance(zuobiao[i].x,zuobiao[i].y,zuobiao[j].x,zuobiao[j].y);
			if(dist>=dis) dis=dist;
		}
    }

	printf("%.4f\n",dis);
	return 0;
}


int main()
{
	int n;
	double maxx= 0 ;
	cin >> n;
	double *x = (double*) malloc( (n+1) * sizeof(double));
	double *y = (double*) malloc( (n+1) * sizeof(double));

	for ( int i = 0 ; i < n ; i++ ) {
		cin >> x[i] >> y[i];
	}

	for ( int i = 0 ; i < n ; i++) {
	   for ( int j = 0 ; j < n ; j++ ) {
		   double temp = sqrt(sqr(x[i]-x[j]) + sqr(y[i]-y[j]));
		   if (temp > maxx) {
		        maxx = temp;
		   }

	   }

	}

	cout << maxx << endl;

return 0;
}


struct Point
{
	double x;
	double y;
};

int main(void)
{
	int n;
	double distant,max=0;

	struct Point point[100];
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%lf %lf",&point[i].x,&point[i].y);
		for(int j=0;j<i;j++)
		{
			distant=sqrt((point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y));
			if(distant>max)
			{
				max=distant;
			}
		}
	}

	printf("%.4lf",max);
	return 0;
}


struct point{
	double x;
	double y;
};
struct point dian[101];
double dis(struct point dian[],int i,int j){
	double x=dian[i].x-dian[j].x;
	double y=dian[i].y-dian[j].y;
	double dis=(x*x+y*y);
	return sqrt(dis);
}
int main()
{
	int n,i,j;
	int t=0,k=0;
	double a[102];
	cin>>n;
	for(i=0;i<n;i++)
		cin>>dian[i].x>>dian[i].y;
	 for(i=0;i<n;++i)
		 for(j=i+1;j<n;++j)
		{ int t=0;
	       while(t<k+1&&abs(a[t]-dis(dian,i,j))>1e-6)t++;
		   if(t==k+1){
		   a[k]=dis(dian,i,j);
		   k++;
		   }
	 }
	  for(i=0;i<k;i++)
		 for(j=0;j<k-i;j++)
			 if(a[j]<a[j+1]){
				 double temp=a[j];
				 a[j]=a[j+1];
				 a[j+1]=temp;
			 }
			 cout<<a[0]<<endl;

	//while(1);
	return 0;
}


struct po
{
	float x;
	float y;
};

void main()
{
	struct po p[10];
	int n;
	int i,j;
	double d=0,a;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%f %f",&p[i].x,&p[i].y);
	}
	for(i=0;i<n;i++)
	{
		for(j=i;j<n;j++)
		{
			a=sqrt(pow(p[i].x-p[j].x,2)+pow(p[i].y-p[j].y,2));
			if(a>d) d=a;
		}
	}
	printf("%.4f\n",d);
}


main()
{
      int n,i,j;
      double d,maxd=0;
      struct
      {
            double x,y;
            }pts[100];
      scanf("%d",&n);
      for(i=0;i<n;i++)
      {
                      scanf("%lf%lf",&pts[i].x,&pts[i].y);
                      for(j=0;j<i;j++)
                      {
                                      d=sqrt((pts[i].x-pts[j].x)*(pts[i].x-pts[j].x)+(pts[i].y-pts[j].y)*(pts[i].y-pts[j].y));
                                      if(d>maxd)
                                      maxd=d;
                      }
      }
      printf("%.4lf",maxd);
      getchar();
      getchar();
      getchar();
}


int main()
{int n,i,j;
 scanf("%d",&n);
 struct a{double x,y;}*p;
 p=(struct a*)malloc(sizeof(struct a)*n);
      for(i=0;i<n;i++)
	  { scanf("%lf%lf",&(p+i)->x,&(p+i)->y);
	  }
 double dis=0;
      for(i=0;i<n;i++)
	  {
		  for(j=0;j<n;j++){
		  double t;
		  t=sqrt(pow(((p+i)->x-(p+j)->x),2)+pow(((p+i)->y-(p+j)->y),2));
		  if(t>dis)
			  dis=t;
		  }

	  }
	  printf("%.4f",dis);
  return 0;
}


int main(int argc, char* argv[])
{
	int n,i,j;
	double *x,*y,d;
	scanf("%d",&n);
	x=(double*)malloc(sizeof(double)*n);
	y=(double*)malloc(sizeof(double)*n);
    for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&x[i],&y[i]);
	}
    for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
            if(i!=j)
			{
			    if(sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))>d)
					d=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
			}
		}
	}
	printf("%.4lf\n",d);
	return 0;
}


int main()
{
int n,i,j;
double a,b,dis;
struct points{
double x,y;
   }point[N];
scanf("%d\n",&n);
for(i=0;i<n;i++){
scanf("%lf%lf\n",&point[i].x,&point[i].y);}
a=(point[0].x-point[1].x)*(point[0].x-point[1].x)+(point[0].y-point[1].y)*(point[0].y-point[1].y);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++){
b=(point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y);
if(a<b)
a=b;}
dis=sqrt(a);
printf("%.4f\n",dis);
return 0;

}


main()
{
      int i,j,n;
      double x[500],y[500],max=0,dis,disx,disy;
      scanf("%d",&n);
      for(i=0;i<n;i++)
          scanf("%lf %lf",&x[i],&y[i]);
      for(i=0;i<n;i++)
      {
          for(j=0;j<i;j++)
          {
              disx=x[i]-x[j];
              disy=y[i]-y[j];
              dis=sqrt(disx*disx+disy*disy);
              if(dis>max)
                  max=dis;
          }
      }
      printf("%.4lf",max);
      getchar();
      getchar();
}


int main()
{
	int n,i,k;
	double point[100][2], s,max=0;
	scanf("%d", &n);
	for (i=0;i<n;i++)
	{
		scanf("%lf%lf", &point[i][0], &point[i][1]);
	}
	for (i=0;i<n-1;i++)
	{
		for (k=i+1;k<n;k++)
		{
			s=sqrt(pow(point[i][0]-point[k][0],2)+pow(point[i][1]-point[k][1],2));
			if (s>max)
				max=s;
		}
	}
	printf("%.4f\n",max);
	scanf("%d",i);
	return 0;

}


void main()
{
	int b=0,i,j,n;
	double max=0,dis;
	scanf("%d", &n);

	struct point
	{
		float x,y;
	}p[100];
	for (i=1;i<=n;i++)
	{
		scanf("%f %f", &p[i].x,&p[i].y);
	}
	for (i=1;i<=n;i++)
	{
		for (j=i+1; j<=n;j++)
		{
			dis=(double)sqrt( (p[i].x-p[j].x)*(p[i].x-p[j].x) + (p[i].y-p[j].y)*(p[i].y-p[j].y));
            if (max<dis) max=dis;
		}
	}
	printf("%.4f\n", max);
}


struct dian
{
	double x;
	double y;
}dian[100];//????

int main()
{
	int n;
	int xm,ym;
	double d,dmax=0.0000;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>dian[i].x>>dian[i].y;
	}
	for(int i=0;i<n-1;i++)
	{
		for(int j=1;j<n;j++)
		{
			d=(dian[i].x-dian[j].x)*(dian[i].x-dian[j].x)+(dian[i].y-dian[j].y)*(dian[i].y-dian[j].y);
			d=sqrt(d);
			if(d>dmax)
				dmax=d;
		}
	}
	printf("%.4f\n",dmax);
	return 0;
}


 int main()
 {
  int n;
  scanf("%d",&n);
  struct point{
   double x,y;
  }*points;
  points=(struct point *)malloc(sizeof(struct point)*n);
  int i;
  for (i=0;i<n;i++)
  {
   scanf("%lf%lf",&points[i].x,&points[i].y);
  }
  double *s;
  s=(double*)malloc(sizeof(double)*((n-1)*(n-1)));
  int j,k;
  for (j=0;j<n-1;j++)
  {
	  for (k=0;k<n-1;k++)
	  {
		  s[j*(n-1)+k]=pow(pow(((points[j].x-points[k].x)*(points[j].x-points[k].x)+(points[j].y-points[k].y)*(points[j].y-points[k].y)),2),0.25);
	  }
  }
  double a=s[0];
  int w;
  for (w=0;w<(n-1)*(n-1);w++)
  {
	  if (a>s[w+1])a=a;
	  else a=s[w+1];
  }
  printf("%.4f\n",a);

  return 0;
 }


int main()
{
	double n,x[100],y[100],distance[100][100],max=0;
	int i,j;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>x[i]>>y[i];
	}
    for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
	{
        distance[i][j]=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
	}
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
		{if (distance[i][j]>max)
		max=distance[i][j];}
	cout<<max<<endl;
	return 0;

}


double x[1000], y[1000];
double Calc_Dis(int i,int j)
{
	double ret;
	ret = sqrt( (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]) );
	return ret;
}

int main()
{
	int n;
	cin >> n;
	for(int i = 0; i < n; i++)
		cin >> x[i] >> y[i];
	double dis, maxd = 0;
	for(int i = 0; i < n; i++)
	{
		for(int j = i+1; j < n; j++)
		{
			dis = Calc_Dis(i,j);
			if(dis > maxd)
				maxd = dis;
		}
	}
	printf("%.4f\n",maxd);
	return 0;
}


int main()
{
    int n;
    scanf("%d", &n);
    int total;
    total=n*(n-1)/2;
    int i;
    double a[100],b[100];
    for(i=1;i<=n;i++)
    scanf("%lf%lf", &a[i], &b[i]);
    double distance[2000];
    int k=1,j;
    for(i=1;i<=n-1;i++)
    {
                       for(j=i+1;j<=n;j++)
                       {
                                          distance[k]=sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
                                          k++;
                       }
    }
    double max=distance[1];
    for(i=1;i<=k;i++)
    {
                    if(max<distance[i])
                    {
                                       max=distance[i];
                    }
    }
    printf("%.4lf", max);
    return 0;
}


double max=0;
void main()
{
	void distance(float x1,float y1,float x2,float y2);
	float x[10],y[10];
	int n,i,j;
	scanf("%d",&n);
	for(i=0;i<n;i++)scanf("%f%f",&x[i],&y[i]);
	for(i=0;i<n;i++)for(j=i+1;j<n;j++)distance(x[i],y[i],x[j],y[j]);
	printf("%.4lf",sqrt(max));
}
void distance(float x1,float y1,float x2,float y2)
{
	double temp;
	temp=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
	if(temp>max)max=temp;
}


int main(int argc, char* argv[])
{
	int n,i,j;
	double l,max;
	max=0;

	struct {
		double a,b;
	} s[100];
	scanf ("%d",&n);
	for (i=0;i<n;i++)
	{
		scanf ("%lf%lf",&s[i].a,&s[i].b);
		for (j=0;j<i;j++)
		{
			l=sqrt((s[i].a-s[j].a)*(s[i].a-s[j].a)+(s[i].b-s[j].b)*(s[i].b-s[j].b));
			if (l>max) max=l;
		}
	}
	printf("%.4lf",max);
	return 0;
}


double k[1000][2];
double work(int i,int j)
{
	double result;
	result=sqrt( pow(k[i][0]-k[j][0],2) +pow( k[i][1] - k[j][1] ,2 )    );
	return result;
}
int main()
{
	double max=0;
	int m,i=0,j;
	cin>>m;
	double s;
	for(i=0;i<m;i++)
	{
		cin>>k[i][0]>>k[i][1];
	}
	for(i=0;i<m;i++)
	{
		for(j=0;j<m;j++)
		{
			s=work(i,j);
			if(s>max)
				max=s;
		}
	}
	cout<<max<<endl;
	return 0;
}


void main()
{
	float a[100],b[100];
	double f(float x,float y,float z,float w);
	int i,j,n;
	double d=0.0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%f %f",&a[i],&b[i]);
	}
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(f(a[i],a[j],b[i],b[j])>d)
				d=f(a[i],a[j],b[i],b[j]);
		}
	}
	d=(float)d;
	printf("%.4f\n",d);
}
double f(float x,float y,float z,float w)
{
	double s;
	s=sqrt((x-y)*(x-y)+(z-w)*(z-w));
	return(s);
}


double len(double a,double b,double c,double d)
{ double le1,le2,op;
   le1=(a>c?a:c)-(a<c?a:c);
   le2=(b>d?b:d)-(b<d?b:d);
   op=le1*le1+le2*le2;
   op=sqrt(op);
   return op;
}

main()
{ int n,i;
  scanf("%d",&n);
  double x[n],y[n];
  for(i=0;i<n;i++)
  {
    scanf("%lf %lf",&x[i],&y[i]);
    }
  int j,k;

  double LEN,max;

  for(j=0;j<n;j++)
  for(k=j;k<n;k++)
  {
    LEN=len(x[j],y[j],x[k],y[k]);

    if(max<LEN)
    max=LEN;
     }

  printf("%.4lf",max);
  getchar();
   getchar();
    getchar();
     getchar();
      getchar();
 getchar();
}


void main()
{
	double x[20],y[20];
	int n,i,j;
	double max=0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%lf%lf",&x[i],&y[i]);
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
			if(a>max)
				max=a;
    printf("%.4lf\n",sqrt(max));
}


int main()
{
	struct point{
		double x;
		double y;
	};
	struct point point[500];
	double distance[500];
	int n,i,j;
	double max=0,Max=0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&point[i].x,&point[i].y);
	}
	for(i=0;i<n;i++)
	{
		double X=point[i].x;
		double Y=point[i].y;
		for(j=0;j<n;j++)
		{
			distance[j]=sqrt((X-point[j].x)*(X-point[j].x)+(Y-point[j].y)*(Y-point[j].y));
			if(distance[j]>max)
				max=distance[j];
		}
		if(max>Max)
			Max=max;
	}
	printf("%.4lf\n", Max);
	return 0;
}


void main()
{
	int i,j,k;
	int n;
	double dot[100][2];
	double distf=0;
	double ld=0;
	double dist=0;
	double x,y;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		for(j=0;j<2;j++)
			scanf("%lf",&dot[i][j]);
		for(i=0;i<n-1;i++)
			for(k=i+1;k<n;k++)
			{
				x=dot[i][0]-dot[k][0];
				y=dot[i][1]-dot[k][1];
				distf=x*x+y*y;
				dist=sqrt(distf);
				if(dist>ld)
				ld=dist;
			}
		printf("%.4f\n",ld);
}


int main(int argc, char* argv[])
{
	struct point{
		double x,y;
	}dian[1000];
	int n,i,j;
	double mdis=0,dis;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%lf %lf",&dian[i].x,&dian[i].y);
    for(i=0;i<(n-1);i++)
	{
		for(j=i+1;j<n;j++)
		{
			dis=(double)sqrt((dian[i].x-dian[j].x)*(dian[i].x-dian[j].x)+(dian[i].y-dian[j].y)*(dian[i].y-dian[j].y));

	        if(mdis<dis)
		    mdis=dis;
		}
	}
	printf("%.4lf\n",mdis);
	return 0;
}


int main()
{
    double max,xd,yd,d;
    int n,i,j;
    double x[1000],y[10000];

    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
        scanf("%lf",&x[i]);
        scanf("%lf",&y[i]);
    }
    max=0;
    d=0;

    for (i=0;i<n-1;i++)
    {
        for (j=i;j<n;j++)
        {
            xd=x[i]-x[j];
            yd=y[i]-y[j];
            d=sqrt(xd*xd+yd*yd);
            if (d>max) max=d;
        }
    }
    printf("%.4lf\n", max);
      return 0;
}


struct point
{ double x;
  double y;
};
void main()
{
	struct point a[50];
	int i,j,n,k=0;
	double max,b[50];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&a[i].x,&a[i].y);
	}
	for(j=0;j<n-1;j++)
	{
		for(i=1;i<n-j;i++)
		{
			b[k]=sqrt((a[i].x-a[i+j].x)*(a[i].x-a[i+j].x)+(a[i].y-a[i+j].y)*(a[i].y-a[i+j].y));
			k++;
		}
	}
	max=b[0];
	for(i=1;i<k-1;i++)
	{
		if(b[i]>max)
			max=b[i];

	}
	printf("%.4lf\n",max);
}


struct dian  {   double a;   double b;  }dia[20];
void main()
 {
int n,i,j;   double max,dis;   scanf("%d",&n);
for(i=0;i<n;i++)    scanf("%lf %lf",&dia[i].a,&dia[i].b);
 max=0;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{     if(((dia[i].a-dia[j].a)*(dia[i].a-dia[j].a)+(dia[i].b-dia[j].b)*(dia[i].b-dia[j].b))>max)
 max=(dia[i].a-dia[j].a)*(dia[i].a-dia[j].a)+(dia[i].b-dia[j].b)*(dia[i].b-dia[j].b);
 }
}
 dis=sqrt(max);
printf("%.4lf",dis);
}


int main(int argc, char* argv[])
{int n,i=0;
	int p,j;

	scanf("%d\n",&n);
	struct point{
		float x,y;
	}top[1000];

	double distance,max1=0;
	for(i=0;i<n;i++){
		scanf("%f %f\n",&top[i].x,&top[i].y);
	}
	for(p=0;p<n;p++){
	for(j=0;j<n;j++){
			distance=sqrt((top[p].x-top[j].x)*(top[p].x-top[j].x)+(top[p].y-top[j].y)*(top[p].y-top[j].y));
			if(distance>=max1){
				max1=distance;
	}
	}
	}
	printf("%.4f\n",max1);
	return 0;
}


int main(int argc, char* argv[])
{
	int n,i,j;
	scanf("%d",&n);
	float *a;
	float *b;
	double max=0.0000,length;
	a=(float*)malloc(sizeof(float)*n);
	b=(float*)malloc(sizeof(float)*n);
	for(i=0;i<n;i++){
		scanf("%f%f",&a[i],&b[i]);
	}
    for(i=0;i<n;i++)
		for(j=0;j<n;j++){
			length=(double)sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
			if(length>max)
				max=length;
		}

	printf("%.4lf",max);
    return 0;
}


int main(int argc, char* argv[])
{
	int n,i,j;
	scanf("%d",&n);
	struct point{
		double x,y;
	};
    struct point point[100];
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&point[i].x,&point[i].y);
	}
	double s,max;
	max=0;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			s=sqrt(pow(point[i].x-point[j].x,2)+pow(point[i].y-point[j].y,2));
			if(max<s)
			{
				max=s;
			}
		}
	}
	printf("%.4lf",max);
	return 0;
}


int main()
{	int q=0;
	int k=0;
	int n=0;
	int i=0;
	double x[100];
	double y[100];
	double s[100];
	double Max=0.0;
	double Maxx=0.0;
	cin>>n;
	for (q=0;q<n;q++)
	{cin>>x[q]>>y[q];}
	for (q=0;q<n;q++)
	{for (i=0;i<n;i++)
	{s[i]=sqrt((x[i]-x[q])*(x[i]-x[q])+(y[i]-y[q])*(y[i]-y[q]));
	if(s[i]>Max)
	{Max=s[i];}
	if(Maxx<Max)
	{Maxx=Max;}}
	}
	cout<<Maxx<<endl;

return 0;
}


int main(int argc, char* argv[])
{
	int n,i,j;
	float a,dis=0;
	struct point
	{
		float x,y;
	}p[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%f %f",&(p[i].x),&(p[i].y));
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			a=sqrt(pow(p[i].x-p[j].x,2)+pow(p[i].y-p[j].y,2));
			if(a>=dis)
			{
				dis=a;
			}
		}
	}
	printf("%.4f",dis);
	return 0;
}


int main()
{
	int n,i,j;
	cin>>n;
	double num[100][2];
	for(i=1;i<=n;i++)
	{
		cin>>num[i][0]>>num[i][1];
	}
	double Mdis=0.0,dis;
	for(i=1;i<=n-1;i++){
		for(j=i+1;j<=n;j++){
			dis=sqrt(pow(num[i][0]-num[j][0],2)+pow(num[i][1]-num[j][1],2));
			if(Mdis<dis)
			{
				Mdis=dis;
			}
			else
				continue;
		}
	}
	cout<<Mdis<<endl;
	return 0;
}


int main()
{
	int n,i,j;
	double a,b;
	double d,maxd,maxd1;
	struct distance{
		double x,y;
	}*num;
	scanf("%d",&n);
	num=(struct distance*)malloc(sizeof(int)*n);
	for(i=0;i<n;i++)
	{
		scanf("%lf %lf",&a,&b);
		(num+i)->x=a;
		(num+i)->y=b;
	}
	for(i=0;i<n;i++)
	{
		if(i==0)
		{
		     for(j=i+1;j<n;j++)
			 {

			        d=sqrt(((num+i)->x-(num+j)->x)*((num+i)->x-(num+j)->x)+((num+i)->y-(num+j)->y)*((num+i)->y-(num+j)->y));
			        if(j==i+1)
			   	        maxd=d;
			        else
					{
				        if(d>maxd)
					    maxd=d;
					}
			 }
			 maxd1=maxd;
		}
		else
		{
		     for(j=i+1;j<n;j++)
			 {
			        d=sqrt(((num+i)->x-(num+j)->x)*((num+i)->x-(num+j)->x)+((num+i)->y-(num+j)->y)*((num+i)->y-(num+j)->y));
			        if(j==i+1)
			   	        maxd=d;
			        else
					{
				        if(d>maxd)
					    maxd=d;
					}

			 }
			if(maxd>maxd1)
			maxd1=maxd;
		}
	}
	printf("%.4lf",maxd1);
	return 0;
}


int main()
{
    int n,i,j;
    scanf("%d",&n);
    double *p;double* q;double *r;
    r=(double*)malloc((n*(n-1)/2)*sizeof(double));
    p=(double*)malloc((n)*sizeof(double));
    q=(double*)malloc((n)*sizeof(double));
    for(i=0;i<n;i++)
    {
        scanf("%lf %lf",p+i,q+i);
    }
    int s;s=-1;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            s=s+1;
            r[s]=sqrt((p[i]-p[j])*(p[i]-p[j])+(q[i]-q[j])*(q[i]-q[j]));
        }
    }
    for(i=1;i<n*(n-1)/2;i++)
    {
        if(r[i]>r[0])
        r[0]=r[i];
    }
    printf("%0.4f\n",r[0]);
    return 0;
}


main()
{
    int n,i,j;
    double d,maxd=0;
    struct
    {
        double x,y;
    }pts[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%lf %lf",&pts[i].x,&pts[i].y);
        for(j=0;j<i;j++)
        {
            d=sqrt((pts[i].x-pts[j].x)*(pts[i].x-pts[j].x)+(pts[i].y-pts[j].y)*(pts[i].y-pts[j].y));
            if(d>maxd)maxd=d;
        }
    }
    printf("%.4lf",maxd);
    return 0;
}


float distance(float x1,float y1,float x2,float y2)
{
	float z;
	z=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
	float d;
	d=sqrt(z);
	return d;
}

int main()
{
	int n;
	scanf("%d",&n);

	struct {
		float x,y;
	} zuobiao[100];
	float dist[100][100];

	int i,j;
	for(i=0;i<n;i++)
	{
		scanf("%f %f",&zuobiao[i].x,&zuobiao[i].y);

	}

	for (i=0; i<100; i++)
		for (j=0; j<100; j++)
			dist[i][j]=0;

	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			dist[i][j]=dist[j][i]=distance(zuobiao[i].x,zuobiao[i].y,zuobiao[j].x,zuobiao[j].y);
		}
    }

	float dis=dist[0][0];
	for(i=0;i<100;i++)
	{
		for(j=0;j<100;j++)
		{
			if(dist[i][j]>=dis) dis=dist[i][j];
		}
	}

	printf("%.4f\n",dis);
	return 0;
}


//
//  main.cpp
//  ????
//
//  Created by ???? on 13-12-25.
//  Copyright (c) 2013? ????. All rights reserved.
//

int main()
{
    int n;
    struct dis
    {
        int  x;
        int  y;
        double dis;
    } a[2000];

    double num[2000][2];
    double max=0;

    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>num[i][0]>>num[i][1];
    }

    int t=1;

    for(int i=1;i<=n;i++)
        {
            for(int j=i;j<=n;j++)
                {
                    a[t].x=i;
                    a[t].y=j;
                    a[t].dis=sqrt(  (num[i][0]-num[j][0])*(num[i][0]-num[j][0])
                                  + (num[i][1]-num[j][1])*(num[i][1]-num[j][1]) );
                    t++;
                    //cout<<a[t].dis<<endl;
                }
        }

    for(int i=1;i<n*n;i++)
    {
        if(a[i].dis>=max)
            max=a[i].dis;
        //cout<<max;
    }

    printf("%.4f\n",max);

    return 0;
}


double d(double x1,double y1,double x2,double y2){
	return(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
}
int main(){
	int n;
	cin>>n;
	double x[100],y[100];
	for(int i=1;i<=n;i++){
		cin>>x[i]>>y[i];
	}
	double max=d(x[1],y[1],x[2],y[2]);
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if(d(x[i],y[i],x[j],y[j])>max) max=d(x[i],y[i],x[j],y[j]);
		}
	}
	printf("%.4lf",max);
	return 0;
}


double dist(double x1,double y1,double x2,double y2)
{
       double dist;
       dist=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
       return dist;
}
main()
{
      int n;
      scanf("%d",&n);
      int i,j,k;
      double length[n][n];
      double x[n],y[n];
      for(i=0;i<n;i++)
      scanf("%lf %lf",&x[i],&y[i]);
      for(i=0;i<n;i++)
      {
      for(j=0;j<n;j++)
      {
      length[i][j]=dist(x[i],y[i],x[j],y[j]);
      }
      }
      double t=0;
      for(i=0;i<n;i++)
      {
      for(j=0;j<n;j++)
      {
      if(length[i][j]>t)
      t=length[i][j];
      }
      }
      printf("%.4lf",t);
      getchar();
      getchar();
}


int main(int argc, char* argv[])
{
	struct point{
		float x;
		float y;
	}a[5000];
	int n,i,j;
	float q;
	double l=0,m=0,m1,m2,m3;
	scanf("%d",&n);
    for(i=0;i<n;i++)
	{
		scanf("%f",&a[i].x);
        scanf("%f",&a[i].y);
	}
    for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			m1=a[i].x-a[j].x;
			m2=a[i].y-a[j].y;
			m3=pow(m1,2)+pow(m2,2);
			l=pow(m3,0.5);
			if(l>=m)
			m=l;
		}
	}
	q=(float)m;
	printf("%.4f",q);
	return 0;
}


int main(int argc, char* argv[])
{
	int num,i,a,b,na=1;
	 double x[50],y[50],z[400];
	 double dis=0;

	scanf("%d",&num);
    for (i=1;i<=num;i++) {
      scanf("%lf",&x[i]);
      scanf("%lf",&y[i]);
	}

	for (a=1;a<=num;a++){
		for(b=a+1;b<=num;b++){
	      z[na]=(x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]);
		  if (z[na]>dis) {
			  dis=z[na];}
		  na++;
		}
	}
	printf("%.4lf\n",sqrt(dis));
	return 0;
}


int main()
{
  int n;
  cin>>n;
  double max=0.0;
  int sum=n*(n-1)/2;
  double array[101][2];
  double distance[5001];
  for(int i=0;i<n;i++)
	  cin>>array[i][0]>>array[i][1];
  int k=0;
  for(int i=0;i<n-1;i++)
	  for(int j=i+1;j<n;j++)
		  distance[k++]=pow((array[i][0]-array[j][0]),2)+pow((array[i][1]-array[j][1]),2);
  for(k=0;k<sum;k++)
         if(max<=distance[k])
				  max=distance[k];
  double Max;
  Max=sqrt(max);
	 printf("%.4f\n",Max);
	   return 0;
}


int main()
{
	int n,i,j;
	float x,y;
	struct point
	{
		float x;
		float y;
	}p[100];
	double s;
	double smax = 0;
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		scanf ("%f%f", &x, &y);
		p[i].x = x;
		p[i].y = y;
	}
	for (i = 0; i < n; i++)
	{
		for (j=0; j < n; j++)
		{

		    s= sqrt ( (p[i].x-p[j].x) * (p[i].x-p[j].x) + (p[i].y-p[j].y) * (p[i].y-p[j].y) );
		    if (smax >= s)
			{
				continue;
			}
			else
			{
				smax = s;
			}
		}
	}
	printf("%.4lf\n" , smax);
	return 0;
}


int main()
{
	int n,i,j;
	double a[2000],b[2000],k,max=0;
	cin>>n;
	for(i=0;i<n;i++)
	   cin>>a[i]>>b[i];
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
		{
			k=(a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]);
			if(k>max)
				max=k;
		}
		max=sqrt(max);
	cout<<fixed<<setprecision(4)<<max<<endl;

return 0;
}


main()
{
      int n,k,i,j;
      double s,m,x,y;
      scanf("%d",&n);
      double *a=(double *)malloc((n+1)*sizeof(double));
      double *b=(double *)malloc((n+1)*sizeof(double));
      for(i=1;i<=n;i++)
      {
            scanf("%lf %lf",&a[i],&b[i]);
      }
      for(m=0,i=1;i<=n-1;i++)
      {
         for(j=i+1;j<=n;j++)
         {
              x=a[j]-a[i]; y=b[j]-b[i];
              s=x*x+y*y;
              if(s>=m) m=s;
         }
      }
      double dis=sqrt(m);
      printf("%.4f",dis);
}


int main()
{
	int n;
	scanf("%d",&n);
	struct point
	{
		double x;
		double y;
	}p[100];

	double d;
	int i=0,j=0;

	double max=0;
	for (i=0;i<n;i++)
	{
		scanf("%lf %lf",&p[i].x,&p[i].y);
		for (j=0;j<i;j++)
		{
	     d=sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y));

		  if (d>max)
		  {
			  max=d;

		  }
        }
     }
	printf("%.4lf",max);
	return 0;

}


double dis(double x,double y)
{
      double s;
      s=sqrt(x*x+y*y);
      return s;
}
main()
{
      double a[L]={0},b[L]={0},S[L]={0};
      int n,i,j,k;
      double D;
      scanf("%d",&n);
      for(i=1;i<=n;i++)
      {
             scanf("%lf %lf",&a[i],&b[i]);
      }
      for(i=1;i<n;i++)
      {
            double max=0;
            double s=0;
            for(j=i+1;j<=n;j++)
            {
                   double x=a[i]-a[j];
                   double y=b[i]-b[j];
                   s=dis(x,y);
                   if(s>max)
                   max=s;
            }
            S[i]=max;
      }
      for(i=1;i<n;i++)
      {
            if(S[i]>D)
            D=S[i];
      }
      printf("%.4lf",D);
      getchar();
      getchar();
      getchar();
      getchar();
}


int main(){
	int a;
	scanf("%d",&a);
	struct point{
		double x,y;
	}point[n];
	int i=0;
	for(i=0;i<a;i++){
		scanf("%lf",&point[i].x);
		scanf("%lf",&point[i].y);
	}

	int v=0;
	double d=0;
	double max=0;
	for(i=0;i<a;i++)
	{
		for(v=0;v<a;v++){
			d=sqrt((point[i].x-point[v].x)*(point[i].x-point[v].x)+(point[i].y-point[v].y)*(point[i].y-point[v].y));
				if(d>max){
					max=d;
				}
		}
	}
	printf("%.4f\n", max);
	return 0;
}


double dis(double a,double b,double c,double d)
{
	double k;
	k=sqrt((a-c)*(a-c)+(b-d)*(b-d));
	return(k);
}
void main()
{
	int n,j,i;
	double a[100],b[100],max;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%lf%lf",&a[i],&b[i]);
	max=dis(a[0],b[0],a[1],b[1]);
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
		{
			if(dis(a[i],b[i],a[j],b[j])>max)
				max=dis(a[i],b[i],a[j],b[j]);
		}
	printf("%.4f\n",max);
}


int main(int argc, char* argv[])
{
	int n;
    double x0,y0,s=0,w;
	struct dian { double x,y;} *d;
	scanf("%d",&n);
	d=(struct dian *) malloc(sizeof(dian)*n);
	for(int j=0;j<n;j++)
	{
		scanf("%lf%lf",&x0,&y0);
        (d+j)->x=x0;
		(d+j)->y=y0;

	}
	for( int l=0;l<n;l++)
	{
        for(int k=l+1;k<n;k++)
		{
			w=((d+l)->x-(d+k)->x)*((d+l)->x-(d+k)->x)+((d+l)->y-(d+k)->y)*((d+l)->y-(d+k)->y);
			if(s<sqrt(w))
			{s=sqrt(w);}

		}
	}
	printf("%.4f",s);

	return 0;
}


int main(int argc, char* argv[])
{
	struct point
	{double x,y;}p[100];

	int i,j,n;
	double maxd =0.0, d;
	scanf("%d", &n);
	for (i=0; i<n; i++)
		scanf("%lf%lf",&p[i].x, &p[i].y);
	for (i=0; i<n; i++){
		for (j=i+1; j<n; j++){
			d = sqrt((p[j].x - p[i].x)*(p[j].x - p[i].x)+
				(p[j].y - p[i].y)*(p[j].y - p[i].y));
			if (d > maxd)
				maxd = d;
		}
	}
	printf ("%.4lf\n",maxd);

	return 0;
}


struct location
{
double x;
double y;
};
struct location a[1000];
int main ()
{
int n,i,j;
double max=0;
scanf ("%d",&n);
for (i=0;i<n;i++)
{
scanf ("%lf %lf",&a[i].x,&a[i].y);
}

for (i=0;i<n;i++)
{for (j=0;j<n;j++)
{
if (sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y))>max)
max= sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
}
}
printf ("%.4lf",max);
}


struct raul
	{
		double a1;
		double a2;
		double b1;
		double b2;
		double c;
	}dian[100],t;

int main()
{
	int n;
	cin>>n;
	int i;
	double a[50][2];
	for(i=1;i<=n;i++)
	{
		cin>>a[i][0]>>a[i][1];
	}
	int j,m=1;
	for(i=1;i<=n;i++)
	{
		for(j=i+1;j<=n;j++)
		{
			dian[m].a1=a[i][0];
			dian[m].a2=a[i][1];
			dian[m].b1=a[j][0];
			dian[m].b2=a[j][1];
			dian[m].c=(a[i][0]-a[j][0])*(a[i][0]-a[j][0])+(a[i][1]-a[j][1])*(a[i][1]-a[j][1]);
			dian[m].c=sqrt(dian[m].c);
			m++;
		}
	}
	double max=dian[1].c;
	for(i=2;i<=m;i++)
	{
		if(dian[i].c>max)
			max=dian[i].c;
	}
	cout<<fixed<<setprecision(4)<<max;
	return 0;
}


struct distant
{
	double cross;
	double line;
}point[1000];
int main()
{
	int n,i,j,k=0;
	double s[1000]={0};
	double c;
	scanf("%d",&n);
	for(i=0;i<n;i++)
			scanf("%lf %lf",&point[i].cross,&point[i].line);
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++,k++)
			s[k]=sqrt((point[i].cross-point[j].cross)*(point[i].cross-point[j].cross)+(point[i].line-point[j].line)*(point[i].line-point[j].line));
	}
	for(i=0;i<k;i++)
	{
		for(j=i+1;j<k;j++)
		{
			if(s[i]<s[j])
			{
				c=s[i];
				s[i]=s[j];
				s[j]=c;
			}
		}
		i++;
	}
	 printf("%.4lf\n",s[0]);
	return 0;
}


struct point
{
	double x,y;
}*point;
int main()
{
    int n,i,j;
	double d,dx,dy;
	double maxd=0;

	scanf("%d",&n);
	point=(struct point*)malloc(sizeof(struct point) *n);
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&point[i].x,&point[i].y);
		for(j=0;j<i;j++)
		{
			dx=point[i].x-point[j].x;
			dy=point[i].y-point[j].y;
			d=sqrt(dx*dx+dy*dy);
			if(d>maxd) maxd=d;
		}
	}
	printf("%.4lf\n",maxd);
	free(point);

	return 0;
}


int main(){
	int n,i,r;
	double M,L;
	double max[10];
	double x[10];
	double y[10];
	scanf("%d",&n);
    for(i=0;i<n;i++){
		scanf("%lf%lf",&x[i],&y[i]);
	}
    for(i=0;i<n;i++)
	{
		for(r=i+1,max[i]=0;r<n;r++){

		        double l;
		        l=(x[r]-x[i])*(x[r]-x[i])+(y[r]-y[i])*(y[r]-y[i]);
                if (max[i]<l)
			    max[i]=l;
		}

        if (i!=0){
			if (max[i]>=max[i-1])
				M=max[i];
			else {
				max[i]=max[i-1];
			    M=max[i];
			}
		};

	};
	L=sqrt(M);
	printf("%.4f\n",L);
	return 0;
}


double d(double x1,double y1,double x2,double y2)
{
    double k;
    k=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    return k;
}

main()
{
      int n;
      int i,j,k;
      double x,y;
      double a[100];
      double b[100];
      double c[100];
      scanf("%d",&n);
      for(i=0;i<n;i++)
      {
                      scanf("%lf %lf",&a[i],&b[i]);
      }
      int h=0;
      for(i=0;i<n;i++)
      {
                    for(j=n-1;j!=i;j--)
                    {
                              c[h]=d(a[i],b[i],a[j],b[j]);

                              h++;
                    }
      }
      double max=0;
      for(i=0;i<h;i++)
      {
                      if(c[i]>max)
                      max=c[i];
      }
      printf("%.4f\n",max);

}


int main(int argc,char*argv[])
{
	int i,j,n;
	double*x,*y,max=0,l;
	scanf("%d",&n);
	x=(double*)malloc(sizeof(double)*n);
	y=(double*)malloc(sizeof(double)*n);
	scanf("%lf%lf",&x[0],&y[0]);
	for(i=1;i<n;i++)
	{
		scanf("%lf%lf",&x[i],&y[i]);
	}
	for(i=1;i<n;i++)
	{
		for(j=0;j<n;j++)
		{

			l=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
			if(l>max)
			{
				max=l;
			}
		}
	}
	printf("%.4lf",max);
	return 0;
}


int main(int argc, char* argv[])
{int z=0,n,x,y,i,b,k;
double dis;
	float dian[100][100];
    double bijiao[100];

	scanf("%d",&n);
    for (x=0;x<n;x++)
		{for (y=0;y<2;y++)
			{
				scanf("%f",&dian[x][y]);
			}
		}

	for (i=0;i<n-1;i++)
		{for (k=i+1;k<n;k++)
				{bijiao[z]=sqrt((dian[k][0]-dian[i][0])*(dian[k][0]-dian[i][0])+(dian[k][1]-dian[i][1])*(dian[k][1]-dian[i][1]));
				z=z+1;
				}
		}
	dis=bijiao[0];
	for (b=1;b<=z;b++)
		{if (bijiao[b]>dis)
				{dis=bijiao[b];}
		else {dis=dis;}
		}
	printf("%.4f\n",dis);

	return 0;
}


main()
{
      int n;
      double max=0,d;
      scanf("%d",&n);
      double *a=(double *)malloc(n*sizeof(double ));
      double *b=(double *)malloc(n*sizeof(double ));
      for(int i=0;i<n;i++)
      scanf("%lf %lf",&a[i],&b[i]);
      for(int i=0;i<n-1;i++)
      for(int j=i+1;j<n;j++)
      {
              d=sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));
              if(d>max)
              max=d;
      }
      printf("%.4lf\n",max);
      free(a);
      free(b);
}


int main()
{
	struct {
		double x,y;
	} a[PI];

	int i,j,num;
	double max,tmp1,tmp2;

	scanf("%d",&num);
	max=0;
	for (i=0;i<num;i++)
	{
		scanf("%lf" "%lf",&a[i].x,&a[i].y);
	}

	for (i=0;i<num;i++)
	{
		for (j=i+1;j<num;j++)
		{
			double ax,ay;
			ax=a[i].x-a[j].x;
			ay=a[i].y-a[j].y;
			tmp1=pow(ax,2)+pow(ay,2);
			tmp2=sqrt(tmp1);
			if (tmp2>max)
			{
				max=(float)tmp2;
			}
		}
	}
	printf("%.4f",max);
	return 0;
}


int main()
{
    int n;
    scanf("%d",&n);
    double x[1000],y[1000];
    double dt,dtmax=0;
    for(int m=0;m<n;m++)
    {
        scanf("%lf%lf",&x[m],&y[m]);
    }
    for(int i=0;i<n-1;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            dt=sqrt(pow(x[j]-x[i],2)+pow(y[j]-y[i],2));
            if(dtmax<dt)
            {
                dtmax=dt;
            }
        }
    }
    printf("%.4lf\n",dtmax);
    getchar();
    getchar();
    getchar();
    getchar();
    getchar();
    getchar();
    return 0;
}


int main(int argc, char* argv[])
{
    int n,i,j,m=0,a=1;
	double max;
	scanf("%d",&n);
	struct point{
		float x;
		float y;
	};
	double dis[1000];
    struct point p[1000];
	for(i=0;i<n;i++){
		scanf("%f%f",&p[i].x,&p[i].y);
	}
	for(i=0;i<n-1;i++){
		for(j=i+1;j<n;j++){
			dis[m]=sqrt(pow((p[i].x-p[j].x),2)+pow((p[i].y-p[j].y),2));
			m++;
		}
	}
     max=dis[0];
	 for(;a<n*(n-1)/2;a++){
	 if(dis[a]>max) max=dis[a];
	 }
	 printf("%.4f\n",max);

	return 0;
}


double length(double a,double b,double c,double d)
{
	double l;
	l=(a-c)*(a-c)+(b-d)*(b-d);
	l=sqrt(l);
	return l;
}
int main()
{
	int n;
	cin>>n;
	double a[1000];
	double b[1000];
	int i,j;
	for(i=1;i<=n;i++)
	{
		cin>>a[i]>>b[i];
	}
	double max=0;
	for(i=1;i<=n;i++)
	{
		for(j=i;j<=n;j++)
		{
		  	if(length(a[i],b[i],a[j],b[j])>max)
		  	max=length(a[i],b[i],a[j],b[j]);
		}
	}
	printf("%.4f\n", max);
	return 0;

}


main()
{
 int n,i,j;
 double *px,*py,f=0,d;
 scanf("%d",&n);
 px=(double *)malloc(n*sizeof(double));
 py=(double *)malloc(n*sizeof(double));
 for(i=0;i<n;i++)
   scanf("%lf %lf",&px[i],&py[i]);
 for(i=0;i<n-1;i++)
    for(j=i+1;j<n;j++)
      {
       d=sqrt((px[j]-px[i])*(px[j]-px[i])+(py[j]-py[i])*(py[j]-py[i]));
       if(f<d)
         f=d;
      }
 printf("%.4lf",f);
 free(px);
 free(py);
}


int main()
{
    int n, i, j;
	double m=0, l, M;
	struct point
	{
		double x;
		double y;
	} point[100];
    scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&point[i].x,&point[i].y);

	}
	for(i=1;i<n;i++)

	{
		for(j=0;j<i;j++)
		{
          l=(point[i].x-point[j].x)*(point[i].x-point[j].x)+(point[i].y-point[j].y)*(point[i].y-point[j].y);
		  if(l>m) m=l;
		}
	}
	M=sqrt(m);
	printf("%.4lf\n",M);
	return 0;
}


int main()
{
	int n,sum=0,i,j;
	double points[2][100]={0},dis[200]={0},max=0;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>points[0][i]>>points[1][i];
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
			dis[sum++]=sqrt(pow(points[0][i]-points[0][j],2.0)+pow(points[1][i]-points[1][j],2.0));
	for(i=0;i<sum;i++)
		if(dis[i]>max)
			max=dis[i];
	printf("%.4f\n",max);
	return 0;
}


int main(int argc, char* argv[])
{
	struct {
		double x,y;
	}zb[number];
	    int n;
		double dis;
		double max=0.0;
	int i,j;
	scanf("%d/n",&n);
	for(i=0; i<n; i++){
		double x1,y1;
        scanf ("%lf" "%lf/n",&x1,&y1);
	        zb[i].x=x1;
			zb[i].y=y1;
         }
			for(i=0;i<n;i++)
			{
		for(j=0;j<n;j++)
		{
			dis=sqrt(pow(zb[i].x-zb[j].x,2)+pow(zb[i].y-zb[j].y,2));
			if(dis>max){
			max=dis;
			}
		}
			}
	printf("%.4f",max);
	return 0;
}


double f(double x,double y)
{
	return (x*x+y*y);
}
void main()
{
	int i,j,n;
	double max=0,d,x[100],y[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%lf%lf",&x[i],&y[i]);
	for(i=0;i<n-1;i++)
		for(j=i;j<n;j++)
		{
			d=sqrt(fabs(f((x[i]-x[j]),(y[i]-y[j]))));
			if(d>max)max=d;

		}
	printf("%.4lf\n",max);

}


int main(int argc, char* argv[])
{
	int n,i,j,m;
	int num;
	double *dis,a;
	struct point
	{
	   double x,y;
	};
	point *dot;
	scanf("%d",&n);
	dot=(struct point*)malloc(sizeof(point)*n);

	for(i=0;i<n;i++)
	{
		scanf("%lf%lf",&((dot+i)->x),&((dot+i)->y) );
	}    //?????

    num=(n*(n-1)/2);
	dis=(double*)malloc(sizeof(double)*num);//????????

    for (m=0,i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++,m++)
		{
		 dis[m]=sqrt( ((dot+i)->x-(dot+j)->x)*((dot+i)->x-(dot+j)->x) + ((dot+i)->y-(dot+j)->y)*((dot+i)->y-(dot+j)->y) );
		}
	}//?????????

    for(m=0;m<(num-1);m++)
	{
		if(dis[m]>dis[m+1])
		{
		 a=dis[m+1];
	     dis[m+1]=dis[m];
		 dis[m]=a;
		}
	}//?????????

 	printf("%.4f\n",dis[num-1]);
	free(dot);
	free(dis);
	return 0;
}


void main()
{
	int i,j,num;
	double mid,max=0;
	float point[100][2];

	scanf("%d",&num);

	for(i=0;i<num;i++)
	{
		scanf("%f %f",&point[i][0],&point[i][1]);
	}
	for(i=0;i<num;i++)
	{
		for(j=i;j<num;j++)
		{
			mid=(point[i][0]-point[j][0])*(point[i][0]-point[j][0])
				+(point[i][1]-point[j][1])*(point[i][1]-point[j][1]);
			if(mid>max)
			{
				max=mid;
			}
		}
	}
	printf("%.4lf\n",sqrt(fabs(max)));
}


int main()
{
  int n;
  cin>>n;
  double x[100],y[100],dis[10000];
  for(int i=0;i<n;i++)
  {
    cin>>x[i]>>y[i];
  }
  int count=0;
  for(int i=0;i<n-1;i++)
	  for(int j=i+1;j<n;j++)
		  dis[count++]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
  double max=0;
  for(int start=0;start<count;start++)
  {
    if(dis[start]>max)
		max=dis[start];
  }
  cout<<max<<setprecision(4)<<fixed<<endl;

  return 0;
}


int main()
{
    int num;
    double x[100],y[100];
    cin>>num;
    for(int i=1;i<=num;i++)
    {
        cin>>x[i]>>y[i];
    }
    double dis[100][100]={0,};
    double temp_dis=0;
    for(int i=1;i<num;i++)
    {
        for(int j=i+1;j<=num;j++)
        {
            dis[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
            if(temp_dis<dis[i][j])
                temp_dis=dis[i][j];
        }
    }
    cout<<fixed<<setprecision(4)<<temp_dis<<endl;

    return 0;
}