import sys



input = sys.stdin.readline



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

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

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

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



a.sort(reverse=True)

b.sort(reverse=True)

c.sort(reverse=True)



d = [aa + bb for aa in a[:k] for bb in b[:k]]

d.sort(reverse=True)



e = [dd + cc for dd in d[:k] for cc in c[:k]]

e.sort(reverse=True)



print(*e[:k], sep='\n')

import sys



input = sys.stdin.readline



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

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

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

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



a.sort(reverse=True)

b.sort(reverse=True)

c.sort(reverse=True)



d = []

for ai, aa in enumerate(a, 1):

    for bi, bb in enumerate(b, 1):

        for ci, cc in enumerate(c, 1):

            if ai * bi * ci > k:

                break

                # (ai,bi,ci)より合計の大きい選び方がk通り以上存在する

                # (ai,bi)を含む組み合わせは、これ以上調べる必要がない

            d.append(aa + bb + cc)



d.sort(reverse=True)



print(*d[:k], sep='\n')

import sys

input = sys.stdin.readline
x, y, z, k = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
c = list(map(int, input().split()))
a.sort(reverse=True)
b.sort(reverse=True)
c.sort(reverse=True)
d = [aa + bb for aa in a[:k] for bb in b[:k]]
d.sort(reverse=True)
e = [dd + cc for dd in d[:k] for cc in c[:k]]
e.sort(reverse=True)
print(*e[:k], sep="\n")

import sys

input = sys.stdin.readline
x, y, z, k = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
c = list(map(int, input().split()))
a.sort(reverse=True)
b.sort(reverse=True)
c.sort(reverse=True)
d = []
for ai, aa in enumerate(a, 1):
    for bi, bb in enumerate(b, 1):
        for ci, cc in enumerate(c, 1):
            if ai * bi * ci > k:
                break
                # (ai,bi,ci)より合計の大きい選び方がk通り以上存在する
                # (ai,bi)を含む組み合わせは、これ以上調べる必要がない
            d.append(aa + bb + cc)
d.sort(reverse=True)
print(*d[:k], sep="\n")

-d = [aa + bb for aa in a[:k] for bb in b[:k]] +d = [] +for ai, aa in enumerate(a, 1): +    for bi, bb in enumerate(b, 1): +        for ci, cc in enumerate(c, 1): +            if ai * bi * ci > k: +                break +                # (ai,bi,ci)より合計の大きい選び方がk通り以上存在する +                # (ai,bi)を含む組み合わせは、これ以上調べる必要がない +            d.append(aa + bb + cc) -e = [dd + cc for dd in d[:k] for cc in c[:k]] -e.sort(reverse=True) -print(*e[:k], sep="\n") +print(*d[:k], sep="\n")