using System;
using System.Numerics;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace debug
{
    class main
    {
        static void Main(string[] args)
        {
            //問題クラスを展開
            ProgramD a = new ProgramD();
            a.main();//実行する

        }

    }

    //ABC123
    class ProgramA
    {
        public void main()
        {
            //入力
            int[] antena = new int[5];
            for(int i = 0; i < 5;i++)
                antena[i] =int.Parse(Console.ReadLine());

            int k = int.Parse(Console.ReadLine());
            
            for(int i = 0;i < 5;i++)
                for (int j = i + 1; j < 5; j++)
                {
                    if(Math.Abs(antena[i] - antena[j]) > k)
                    {
                        Console.WriteLine(":(");
                        return;
                    }
                }

            Console.WriteLine("Yay!");

        }
    }

    class ProgramB
    {
        public void main()
        {
            //入力
            int[] food = new int[5];
            int[] one = new int[5];
            for (int i = 0; i < 5; i++)
            {
                string s = Console.ReadLine();
                food[i] = int.Parse(s);
                one[i] = s[s.Length -1]  - '0';
            }

            int flag = 5;
            int t = 10;
            for (int i = 0; i < 5; i++)
            {
                if (one[i] == 0)
                    continue;
                if(one[i] < t)
                {
                    t = one[i];
                    flag = i;
                }
            }

            int ans = 0;
            for (int i = 0; i < 5; i++)
            {
                if (i == flag || one[i] == 0)
                    ans += food[i];
                else
                    ans += food[i] - one[i] + 10;

            }
            Console.WriteLine(ans);
        }

        
    }

    class ProgramC
    {
        public void main()
        {

            //入力
            long n= long.Parse(Console.ReadLine());
            long[] way = new long[5];
            for (int i = 0; i < 5; i++)
                way[i] = long.Parse(Console.ReadLine());

            Array.Sort(way);

            if(n % way[0] == 0)
                Console.WriteLine(n/way[0] + 4);
            else
                Console.WriteLine(n / way[0] + 5);
        }


    }



    class ProgramD
    {
        public void main()
        {

            //入力
            string[] s = Console.ReadLine().Split(' ');
            int x = int.Parse(s[0]);
            int y = int.Parse(s[1]);
            int z = int.Parse(s[2]);
            int k = int.Parse(s[3]);


            long[] a = new long[x];
            long[] b = new long[y];
            long[] c = new long[z];

            string[] t1 = Console.ReadLine().Split(' ');
            string[] t2 = Console.ReadLine().Split(' ');
            string[] t3 = Console.ReadLine().Split(' ');
            for (int i = 0; i < x; i++)
                a[i] = long.Parse(t1[i]);
            for (int i = 0; i < y; i++)
                b[i] = long.Parse(t2[i]);
            for (int i = 0; i < z; i++)
                c[i] = long.Parse(t3[i]);

            Array.Sort(a);
            Array.Reverse(a);
            Array.Sort(b);
            Array.Reverse(b);
            Array.Sort(c);
            Array.Reverse(c);

            List<long> ans = new List<long>();

            for(int i = 0; i < x;i++)
                for(int j = 0;j <y;j++)
                    for(int l = 0;l < z;l++)
                    {
                        if ((i + 1) * (j + 1) * (l + 1) > k)
                            continue;

                        ans.Add(a[i] + b[j] + c[l]);
                    }

            ans.Sort();
            ans.Reverse();


            for (int i = 0; i < k; i++)
                Console.WriteLine(ans[i]);




        }
    }

    


}






Measured memory_bytes: 30544