local PairingHeap={}

PairingHeap.merge=function(self,a,b)
	if not a then
		return b
	elseif not b then
		return a
	elseif a[1]<b[1] then
		b[4]=a[3]
		a[3]=b
		return a
	else
		a[4]=b[3]
		b[3]=a
		return b
	end
end

PairingHeap.twopassmerge=function(self,a)
	local b=a and a[4]
	if b then
		local newnode=b[4]
		a[4]=false
		b[4]=false
		return self:merge(self:merge(a,b),self:twopassmerge(newnode))
	else
		return a
	end
end

PairingHeap.empty=function(self)
	return not self.root
end

PairingHeap.pop=function(self)
    local root=self.root
    local value=root[2]
	self.root=self:twopassmerge(root[3])
    for i=1,4 do
        root[i]=false
	end
	table.insert(self,root)
    return value
end

PairingHeap.push=function(self,key,value)
    local root=self.root
	if root and root[1]<key then
		root[3]={
            key,
            value,
            false,
            root[3],
        }
    else
		self.root={
            key,
            value,
            root,
            false,
        }
	end
end

PairingHeap.join=function(self,other)
	local a=self.root
	local b=other.root
	if a[1]<b[1]then
		b[4]=a[3]
		a[3]=b
	else
		a[4]=b[3]
		b[3]=a
		self.root=b
	end
	return self
end

PairingHeap.new=function(self)
    local obj={}
    setmetatable(obj,{__index=PairingHeap})
    return obj
end

----------

local xyz={io.read("n","n","n")}
local k=io.read("n")
local abc={}
for i=1,3 do
    abc[i]={}
    for j=1,xyz[i] do
        abc[i][j]=io.read("n")
    end
    table.sort(abc[i],function(a,b)
        return a>b
    end)
end

local pq=PairingHeap:new()
local map={}

local frstky=abc[1][1]+abc[2][1]+abc[3][1]
pq:push(-frstky,{1,1,1,frstky})

for i=1,k do
    local pop=pq:pop()
    print(pop[4])
    for j=1,3 do
        if pop[j]<xyz[j] then
            local key=pop[4]-abc[j][pop[j]]+abc[j][pop[j]+1]
            local val={pop[1],pop[2],pop[3],key}
            val[j]=val[j]+1
            local mapkey=tostring(key)
            for l=1,3 do
                mapkey=mapkey.." "..val[l]
            end
            if not map[mapkey] then
                map[mapkey]=true
                pq:push(-key,val)
            end
        end
    end
end