X, Y, Z, K = gets.split(' ').map(&:to_i)
A = gets.split(' ').map(&:to_i).sort.reverse
B = gets.split(' ').map(&:to_i).sort.reverse
C = gets.split(' ').map(&:to_i).sort.reverse

ret = []
a_i = 0
b_i = 0
c_i = 0
K.times do
  ret << A[a_i] + B[b_i] + C[c_i]

  next_a = A[a_i+1].nil? ? 0 : A[a_i+1]
  next_b = B[b_i+1].nil? ? 0 : B[b_i+1]
  next_c = C[c_i+1].nil? ? 0 : C[c_i+1]
  diff_a = A[a_i] - next_a
  diff_b = B[b_i] - next_b
  diff_c = C[c_i] - next_c


  if !next_a.zero? && diff_a <= diff_b && diff_a <= diff_c
    a_i += 1
    next
  end
  if !next_b.zero? && diff_b <= diff_a && diff_b <= diff_c
    b_i += 1
    next
  end
  if !next_c.zero? && diff_c <= diff_b && diff_c <= diff_b
    c_i += 1
    next
  end
end
ret = ret.sort.reverse
K.times do |i|
  puts ret[i]
end