def dfs(
	v : Array(Array(Int32)),
	d : Int32,
	r : Int32
) : Int32
	return 0_i32 if d==v.size
	Memo[{d,r}]||=(0..[r,3].min).map{|i|dfs(v,d+1,r-i)+v[d][i]}.min
end
Memo=Hash(Tuple(Int32,Int32),Int32).new
n,k=gets.not_nil!.split.map(&.to_i)
v=(0...n).map{gets.not_nil!.split.map(&.to_i)+[1_i32]}.to_a
p dfs(v,0,k) / n.to_f