def main():

	x, y, z, k = list(map(int, input().split()))

	a = list(map(int, input().split()))

	b = list(map(int, input().split()))

	c = list(map(int, input().split()))

	d = [0]*x*y

	for i in range(x):

		for j in range(y):

			d[i*y+j] = a[i]+b[j]

	d.sort(reverse=True)

	c.sort(reverse=True)



	c_len = min(k, z)

	d_len = min(k, x*y)

	e = [0]*d_len*c_len

	for i in range(d_len):

		for j in range(c_len):

			e[i*c_len+j] = d[i] + c[j]

	e.sort(reverse=True)

	for i in range(k):

		print((e[i]))





if __name__ == '__main__':

    main()
def main():

	x, y, z, k = list(map(int, input().split()))

	a = list(map(int, input().split()))

	b = list(map(int, input().split()))

	c = list(map(int, input().split()))



	solve(a, b, c, x, y, z, k)



def solve(a, b, c, x, y, z, k):

	a.sort(reverse=True)

	b.sort(reverse=True)

	c.sort(reverse=True)

	stack = list()

	for p in range(x):

		for q in range(y):

			if (p+1)*(q+1) > k:

				break

			for r in range(z):

				if (p+1)*(q+1)*(r+1) > k:

					break

				stack.append(a[p]+b[q]+c[r])

	stack.sort(reverse=True)

	for i in range(k):

		print((stack[i]))



if __name__ == '__main__':

    main()
def main():
    x, y, z, k = list(map(int, input().split()))
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    c = list(map(int, input().split()))
    d = [0] * x * y
    for i in range(x):
        for j in range(y):
            d[i * y + j] = a[i] + b[j]
    d.sort(reverse=True)
    c.sort(reverse=True)
    c_len = min(k, z)
    d_len = min(k, x * y)
    e = [0] * d_len * c_len
    for i in range(d_len):
        for j in range(c_len):
            e[i * c_len + j] = d[i] + c[j]
    e.sort(reverse=True)
    for i in range(k):
        print((e[i]))


if __name__ == "__main__":
    main()

def main():
    x, y, z, k = list(map(int, input().split()))
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    c = list(map(int, input().split()))
    solve(a, b, c, x, y, z, k)


def solve(a, b, c, x, y, z, k):
    a.sort(reverse=True)
    b.sort(reverse=True)
    c.sort(reverse=True)
    stack = list()
    for p in range(x):
        for q in range(y):
            if (p + 1) * (q + 1) > k:
                break
            for r in range(z):
                if (p + 1) * (q + 1) * (r + 1) > k:
                    break
                stack.append(a[p] + b[q] + c[r])
    stack.sort(reverse=True)
    for i in range(k):
        print((stack[i]))


if __name__ == "__main__":
    main()

-    d = [0] * x * y -    for i in range(x): -        for j in range(y): -            d[i * y + j] = a[i] + b[j] -    d.sort(reverse=True) +    solve(a, b, c, x, y, z, k) + + +def solve(a, b, c, x, y, z, k): +    a.sort(reverse=True) +    b.sort(reverse=True) -    c_len = min(k, z) -    d_len = min(k, x * y) -    e = [0] * d_len * c_len -    for i in range(d_len): -        for j in range(c_len): -            e[i * c_len + j] = d[i] + c[j] -    e.sort(reverse=True) +    stack = list() +    for p in range(x): +        for q in range(y): +            if (p + 1) * (q + 1) > k: +                break +            for r in range(z): +                if (p + 1) * (q + 1) * (r + 1) > k: +                    break +                stack.append(a[p] + b[q] + c[r]) +    stack.sort(reverse=True) -        print((e[i])) +        print((stack[i]))