#include<stdio.h>
struct s{
float score[20];
float ave;
}stu[100];
void swap(float *x,float *y)
{
float temp=*y;
*y=*x;
*x=temp;
}
void sort(struct s *stu,int m)
{
float *p=stu->score,*min;
float *p_end=stu->score+m-1;
for(;p<p_end;p++)
{
min=p;
for(float *p1=p+1;p1<=p_end;p1++)
{
if(*p1<*min)
min=p1;
}
swap(min,p);
}
}
void ave(struct s *stu,int m)
{
float sum=0;
for(int i=1;i<m-1;i++)
{
sum+=stu->score[i];
}
stu->ave=sum/(m-2);
}
int main()
{
int n,m,max;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%f",&stu[i].score[j]);
}
}
for(int i=0;i<n;i++)
{
sort(stu+i,m);
}
for(int i=0;i<n;i++)
{
ave(stu+i,m);
}
for(int i=0;i<n;i++)
{
max=0;
if(stu[i].ave>stu[max].ave)
max=i;
}
printf("%.2f",stu[max].ave);
}