using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AtCoder
{
    class Program
    {
        static void Main()
        {
            Solve();

            Console.ReadKey();
        }

        static void Solve()
        {
            var str = IO.GetIntList();
            var X = str[0];
            var Y = str[1];
            var Z = str[2];
            var K = str[3];

            var A = IO.GetLongList().OrderByDescending(a => a).ToArray();
            var B = IO.GetLongList().OrderByDescending(a => a).ToArray();
            var C = IO.GetLongList().OrderByDescending(a => a).ToArray();
            var queue = new PriorityQueue<Hoge>();
            var memo = new Dictionary<string, int>();
            queue.Push(new Hoge(A[0] + B[0] + C[0],0,0,0));
            for (int i = 0; i < K; i++)
            {
                var q = queue.Peek();
                Console.WriteLine(q.P);
                if (q.X < X - 1 && memo.ContainsKey((q.X + 1) + "," + q.Y + "," + q.Z) == false)
                {
                    var hoge = new Hoge(A[q.X + 1] + B[q.Y] + C[q.Z], q.X + 1, q.Y, q.Z);
                    queue.Push(hoge);
                    memo.Add((q.X + 1) + "," + q.Y + "," + q.Z, 0);
                }
                if (q.Y < Y - 1 && memo.ContainsKey(q.X + "," + (q.Y + 1) + "," + q.Z) == false)
                {
                    var hoge = new Hoge(A[q.X] + B[q.Y + 1] + C[q.Z], q.X, q.Y + 1, q.Z);
                    queue.Push(hoge);
                    memo.Add(q.X + "," + (q.Y + 1) + "," + q.Z, 0);
                }
                if (q.Z < Z - 1 && memo.ContainsKey(q.X + "," + q.Y + "," + (q.Z + 1)) == false)
                {
                    var hoge = new Hoge(A[q.X] + B[q.Y] + C[q.Z + 1], q.X, q.Y, q.Z + 1);
                    queue.Push(hoge);
                    memo.Add(q.X + "," + q.Y + "," + (q.Z + 1), 0);
                }


                queue.Pop();
            }

            //Console.WriteLine(ans);
        }
    }

    class Hoge : IComparable
    {
        public Hoge(long p,int x,int y,int z)
        {
            P = p;
            X = x;
            Y = y;
            Z = z;
        }
        public int X { get; set; }
        public int Y { get; set; }
        public int Z { get; set; }
        public long P { get; set; }

        public int CompareTo(object o)
        {
            var n = ((Hoge)o).P;
            return P > (long)n ? 1 : P < (long)n ? -1 : 0;
        }
    }

    class PriorityQueue<T> where T : IComparable
    {
        public PriorityQueue()
        {
            buffer = new List<T>();
        }

        List<T> buffer;
        public void Push(T elem)
        {
            int n = buffer.Count;
            buffer.Add(elem);
            while (n != 0)
            {
                int i = (n - 1) / 2;
                if (buffer[n].CompareTo(buffer[i]) > 0)
                {
                    T temp = buffer[n];
                    buffer[n] = buffer[i];
                    buffer[i] = temp;
                }
                n = i;
            }
        }

        public void Pop()
        {
            int n = buffer.Count - 1;
            buffer[0] = buffer[n];
            buffer.RemoveAt(n);
            for (int i = 0, j; (j = 2 * i + 1) < n;)
            {
                if ((j != n - 1) && (buffer[j].CompareTo(buffer[j + 1]) < 0)) { j++; }
                if (buffer[i].CompareTo(buffer[j]) < 0)
                {
                    T temp = buffer[j];
                    buffer[j] = buffer[i];
                    buffer[i] = temp;
                }
                i = j;
            }
        }

        public T Peek()
        {
            return buffer[0];
        }
    }


    static class IO
    {
        static public string GetString() { return Console.ReadLine(); }
        static public int GetInt() { return int.Parse(Console.ReadLine()); }
        static public long GetLong() { return long.Parse(Console.ReadLine()); }
        static public List<string> GetStringList() { return Console.ReadLine().Split(' ').ToList(); }
        static public List<int> GetIntList() { return Console.ReadLine().Split(' ').Select(int.Parse).ToList(); }
        static public List<long> GetLongList() { return Console.ReadLine().Split(' ').Select(long.Parse).ToList(); }
        static public List<double> GetDoubleList() { return Console.ReadLine().Split(' ').Select(double.Parse).ToList(); }
        static public void WriteStrings<T>(IEnumerable<T> values) { foreach (var o in values) { Console.Write(o + " "); } }
    }
}

Measured memory_bytes: 20492