X, Y, Z, K = gets.split.map(&:to_i)
a_list = gets.split.take(X).map(&:to_i).sort_by { |n| -n }
b_list = gets.split.take(X).map(&:to_i).sort_by { |n| -n }
c_list = gets.split.take(X).map(&:to_i).sort_by { |n| -n }

ret = []
a_list.each.with_index do |a, a_i|
  b_list.each.with_index do |b, b_i|
    c_list.each.with_index do |c, c_i|
      break if (a_i + 1) * (b_i + 1) * (c_i + 1) > K
      ret.push(a + b + c)
    end
  end
end
ret = ret.sort_by { |n| -n }
K.times do |i|
  puts ret[i]
end
