#include typedef long long ll; typedef unsigned long long ull; using namespace std; #define pb push_back int dy[]={0, 0, 1, -1, 1, 1, -1, -1}; int dx[]={1, -1, 0, 0, 1, -1, -1, 1}; #define FOR(i,a,b) for (int i=(a);i<(b);i++) #define RFOR(i,a,b) for (int i=(b)-1;i>=(a);i--) #define REP(i,n) for (int i=0;i<(n);i++) #define RREP(i,n) for (int i=(n)-1;i>=0;i--) #define mp make_pair #define fi first #define sc second #define INF (1e9) int N,P; int a[4][5000]; int dp[5001][15001]; int main(){ scanf("%d%d",&N,&P); REP(i,N) { scanf("%d%d%d",a[0]+i,a[1]+i,a[2]+i); a[3][i] = 1; } REP(j,P+1) { dp[N - 1][j] = (j < 4) ? a[j][N - 1] : INF; } RREP(i,N - 1) { REP(j,P+1) { int x[4]; REP(k,4) x[k] = INF; REP(k,4) { if(j > k - 1) { x[k] = dp[i + 1][j - k] + a[k][i]; } } int y = INF; REP(k,4) { if(y > x[k]) y = x[k]; } dp[i][j] = y; } } printf("%0.10f\n",dp[0][P] / (double)N); return 0; }