n, pp = gets.chomp.split(" ").map(&:to_i) INF = Float::INFINITY dp = Array.new(2).map{Array.new((n * 3)+4,INF)} dp[0][0] = 0 max = 0 n.times do |i| a, b, c = gets.chomp.split(" ").map(&:to_i) d = 1 rank = [a,b,c,d] max += 3 0.upto(max) do |j| 0.upto(3) do |k| #p [dp[1][j+k],dp[0][j+k]+rank[k]].min dp[1][j+k] = [dp[1][j+k],dp[0][j]+rank[k]].min end end 0.upto(max) do |xy| dp[0][xy] = dp[1][xy] dp[1][xy] = INF end end puts ((dp[0])[pp])/n.to_f