import scala.io.StdIn._
object Main extends App {

  val Array(x, y, z, k) = readLine.trim.split(' ').map(_.toInt)
  val a = readLine.trim.split(' ').map(_.toLong)
  val b = readLine.trim.split(' ').map(_.toLong)
  val c = readLine.trim.split(' ').map(_.toLong).sorted(Ordering.Long.reverse)
  val ab = a.flatMap{n ⇒ b.map{_ + n}}.sorted
  val max = a.max + b.max + c.max

  for (i ← 0 until k){
    println(firstTrue(0, max + 1){value ⇒
      countUpper(value) <= i
    })
  }
  def firstTrue(from: Long, until: Long)(@inline predicate: Long ⇒ Boolean): Long = {
    var left = from
    var right = until
    while (left < right){
      val mid = (left + right) / 2
      if (!predicate(mid)){
        left = mid + 1
      }else {
        right = mid
      }
    }
    right
  }
  def countUpper(target: Long): Int = {
    x * y * z - c.map{n ⇒ upperBound(ab, target - n)}.sum
  }

  def upperBound(array: Array[Long], target: Long): Int = {
    var left = 0
    var right = array.size
    while (left < right){
      val mid = (left + right) / 2
      if (array(mid) <= target){
        left = mid + 1
      }else {
        right = mid
      }
    }
    right
  }
  implicit class Extension[T](val value: T) extends AnyVal {
    @inline def let[A](@inline func: T ⇒ A): A = func(value)
    @inline def also(@inline func: T ⇒ Unit): T = {func(value); value}
  }
}