"use strict";
function I(s,f){this._s=s.split("\n");this._c=0;this._l=0;this._f=f||Number}I.prototype.a=function(){var l=this._s[this._l];if(!l)return;var t=l.trim().split(" ");var a=t[this._c];this._c++;if(t.length===this._c){this._c=0;this._l++}return this._f(a)};I.prototype.l=function(){var l=this._s[this._l];if(!l)return;this._c=0;this._l++;return l.split(" ").map(this._f)};
function PriorityQueue(t,i){this._pq=[null].concat(t),this._cf=i||function(t,i){return t>i};for(let t=Math.floor(this._pq.length/2);t>=1;t--)this._maxHeapify(t)}PriorityQueue.prototype._parent=function(t){return Math.floor(t/2)},PriorityQueue.prototype._left=function(t){return 2*t},PriorityQueue.prototype._right=function(t){return 2*t+1},PriorityQueue.prototype._maxHeapify=function(t){(function t(i){let e=this._left(i),p=this._right(i),r=i;if(e<this._pq.length&&this._cf(this._pq[e],this._pq[i])&&(r=e),p<this._pq.length&&this._cf(this._pq[p],this._pq[r])&&(r=p),r!==i){let e=this._pq[i];this._pq[i]=this._pq[r],this._pq[r]=e,t.call(this,r)}}).call(this,t)},PriorityQueue.prototype.maximum=function(){return this._pq[1]},PriorityQueue.prototype.extractMax=function(){if(this._pq.length<=1)return;let t=this._pq[1];return this._pq[1]=this._pq[this._pq.length-1],this._pq.pop(),this._maxHeapify(1),t},PriorityQueue.prototype.increaseKey=function(t,i){let e=t;if(!this._pq[e]||this._cf(i,this._pq[e]))for(this._pq[e]=i;e>1&&!this._cf(this._pq[this._parent(e)],this._pq[e]);){let t=this._pq[e];this._pq[e]=this._pq[this._parent(e)],this._pq[this._parent(e)]=t,e=this._parent(e)}},PriorityQueue.prototype.insert=function(t){this._pq.push(null),this.increaseKey(this._pq.length-1,t)},PriorityQueue.prototype.size=function(t){return this._pq.length-1};
function buildArray(r,t){let l=t||0;for(let t=r.length;t>0;t--){const n=r[t-1];l=Array(n).fill().map(()=>JSON.parse(JSON.stringify(l)))}return l}

function main(input) {
  var o = new I(input);

  var x = o.a();
  var y = o.a();
  var z = o.a();
  var k = o.a();

  var a = o.l();
  var b = o.l();
  var c = o.l();

  a.sort((a,b) => b - a);
  b.sort((a,b) => b - a);
  c.sort((a,b) => b - a);

  var mark = [];

  var pq = new PriorityQueue([], (a,b) => a.v > b.v);
  pq.insert({
    v: a[0] + b[0] + c[0], 
    x: 0,
    y: 0,
    z: 0
  });
  mark[getKey(0,0,0)] = 1;

  var count = 0;

  while(count < k) {
    count += 1;
    var max = pq.extractMax();
    console.log(max.v);
    if (max.x + 1 < x && mark[getKey(max.x + 1,max.y,max.z)] === undefined) {
      pq.insert({ v: a[max.x +1] + b[max.y] + c[max.z], x: max.x +1, y: max.y, z: max.z});
      mark[getKey(max.x + 1,max.y,max.z)] = 1;
    }
    if (max.y + 1 < y && mark[getKey(max.x, max.y + 1,max.z)] === undefined) {
      pq.insert({ v: a[max.x] + b[max.y + 1] + c[max.z], x: max.x, y: max.y + 1, z: max.z});
      mark[getKey(max.x,max.y + 1,max.z)] = 1;
    }
    if (max.z + 1 < z && mark[getKey(max.x, max.y, max.z + 1)] === undefined) {
      pq.insert({ v: a[max.x] + b[max.y] + c[max.z + 1], x: max.x, y: max.y, z: max.z + 1});
      mark[getKey(max.x,max.y,max.z + 1)] = 1;
    }
  }
}

function getKey(x,y,z) {
  return x*1001*1001 + y*1001 +z;
}


main(require("fs").readFileSync("/dev/stdin", "utf8"));

Measured memory_bytes: 13872