import java.util.* fun main(args: Array) { val sc = Scanner(System.`in`) val (N, P) = Pair(sc.nextInt(), sc.nextInt()) val q = Array(N, { arrayOf(sc.nextInt(), sc.nextInt(), sc.nextInt() )}) var dp = Array(P+1, { 0L }) val inf = 100000L*N val filled_dp = Array(P+1, { inf }) for (i in 0 until N) { val _dp = filled_dp.clone() for ((j, p) in (0 until 4).zip(arrayOf(q[i][0], q[i][1], q[i][2], 1))) { for (k in Math.min(3*i, P-j) downTo 0) { _dp[k+j] = Math.min(_dp[k+j], dp[k]+p) } } dp = _dp } println(dp[P].toDouble() / N.toDouble()) }