#include <bits/stdc++.h>
#define MOD 1000000007LL
using namespace std;
typedef long long ll;
typedef pair<int,int> P;

int n,m;
int val[2001][3];
long double per[2001][2001];
long double winper[2001][3][4];
long double loseper[2001][3];
long double tmp[4];

int main(void){
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++){
		scanf("%d%d%d",&val[i][0],&val[i][1],&val[i][2]);
	}
	per[0][0]=1.0;
	for(int i=0;i<m;i++){
		for(int j=0;j<=i;j++){
			per[i+1][j]+=per[i][j]*2.0/3.0;
			per[i+1][j+1]+=per[i][j]/3.0;
		}
	}
	for(int j=m-1;j>=0;j--){
		per[m][j]+=per[m][j+1];
	}
	for(int ty=0;ty<3;ty++){
		for(int i=0;i<=m;i++){
			loseper[i][ty]=1.0;
			winper[i][ty][0]=1.0;
			int pts=val[0][ty]*i;
			for(int j=1;j<n;j++){
				int ned=pts/val[j][ty];
				if(ned*val[j][ty]<pts){
					ned++;
				}
				long double pe=0.0;
				if(ned<=m)pe=per[m][ned];
				loseper[i][ty]*=pe;
				for(int k=0;k<4;k++){
					tmp[k]=0.0;
				}
				for(int k=0;k<3;k++){
					tmp[k+1]+=winper[i][ty][k]*pe;
					tmp[k]+=winper[i][ty][k]*(1.0-pe);
				}
				for(int k=0;k<3;k++){
					winper[i][ty][k]=tmp[k];
				}
			}
		}
	}
	long double best=-3.0;
	for(int i=0;i<=m;i++){
		for(int j=0;j<=m-i;j++){
			int k=m-i-j;
			long double result=0.0;
			for(int l=0;l<3;l++){
				result+=winper[i][0][l]*5.0;
				result+=winper[j][1][l]*3.0;
				result+=winper[k][2][l]*2.0;
			}
			result-=loseper[i][0];
			result-=loseper[j][1];
			result-=loseper[k][2];
			best=max(best,result);
		}
	}
	printf("%.10f\n",(double)best);
	return 0;
}