import java.util.Scanner

import scala.collection.mutable.ArrayBuffer

object Main {
  def main(args: Array[String]) {
    val result = solve(new Scanner(System.in))
    if (result.length > 0) println(result)
  }

  def solve(in: String): String = solve(new Scanner(in))

  def solve(sc: Scanner): String = {
    val X = sc.nextInt
    val Y = sc.nextInt
    val Z = sc.nextInt
    val K = sc.nextInt
    val A = Array.fill(X)(sc.nextLong).sorted.reverse
    val B = Array.fill(X)(sc.nextLong).sorted.reverse
    val C = Array.fill(X)(sc.nextLong).sorted.reverse

    val ar = new ArrayBuffer[Long]()
    var ai = 0
    while (ai < A.length) {
      var bi = 0
      while (bi < B.length /*&& (ai + 1) * (bi * 1) <= K*/) {
        var ci = 0
        while (ci < C.length /*&& (ai + 1) * (bi + 1) * (ci + 1) <= K*/) {
          ar.append(A(ai) + B(bi) + C(ci))
          ci += 1
        }
        bi += 1
      }
      ai += 1
    }
    ar.sorted.reverse.take(K).mkString("\n")
  }
}
