n,c=gets.split.map &:to_i l=gets.split.map &:to_i w=gets.split.map &:to_i d=Array.new(151){Array.new(51){[0]*51}} (0...n).each{|i|(0...n).each{|j|(0...n).each{|k|d[b=w[i]+w[j]+w[k]][y=l[j]][z=l[k]]=[d[b][y][z],(x=l[i])!=z&&0<(x-y)*(z-y)?x+y+z:0].max}}} (0..c).each{|a|(0..50).each{|x|(0..50).each{|y|(0...n).each{|i|d[b=a+w[i]][y][z=l[i]]=[d[b][y][z],(e=d[a][x][y])>0&&x!=z&&0<(x-y)*(z-y)?e+z:0].max}}}} p d[0,c+1].map{|f|f.map(&:max).max}.max