#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include const double EPS = (1e-10); using namespace std; using Int = long long; //using namespace boost::multiprecision; const Int MOD = 1000000007; Int mod_pow(Int x, Int n) { Int res = 1; while(n > 0) { if(n & 1) res = (res * x) % MOD; //ビット演算(最下位ビットが1のとき) x = (x * x) % MOD; n >>= 1; //右シフト(n = n >> 1) } return res; } map, Int> m; int p[5001][4]; Int INF = 10000000000; Int rec(int x, int y){ if (x == 0){ return m[{x, y}] = p[x][y]; } if (m.find({x, y}) == m.end()) m[{x, y}] = INF; if (m[{x, y}] == INF){ for (int i = 0; i < 4; i++){ if (y-i > 3*x) continue; if (y-i < 0) continue; m[{x, y}] = min(m[{x, y}], rec(x-1, y-i) + p[x][i]); } } return m[{x, y}]; } int main(){ cin.tie(0); int N, P; cin >> N >> P; for (int i = 0; i < N; i++){ cin >> p[i][0] >> p[i][1] >> p[i][2]; p[i][3] = 1; } printf("%.12f", rec(N-1, P)/(double)N); }