function Main(input) {
  var list = input.split("\n");
  var X = parseInt(list[0].split(" ")[0],10);
  var Y = parseInt(list[0].split(" ")[1],10);
  var Z = parseInt(list[0].split(" ")[2],10);
  var K = parseInt(list[0].split(" ")[3],10);
  var A = list[1].split(" ").map(s => parseInt(s, 10));
  var B = list[2].split(" ").map(s => parseInt(s, 10));
  var C = list[3].split(" ").map(s => parseInt(s, 10));
  
  var maxlist = Array(0);
  var listlen;
  var max;
  var maxnum;
  var tmp;
  
  A.sort(comp);
  B.sort(comp);
  C.sort(comp);

  maxlist.push([A[X-1]+B[Y-1]+C[Z-1], X-1, Y-1, Z-1]);
  
  for (i = 0; i < K; i++) {
    max = 0;
    listlen = maxlist.length;
    for (j=0; j<listlen; j++) {
      if (maxlist[j][0] > max) {
        max = maxlist[j][0];
        maxnum = j;
      }
    }
    
    console.log(max);
      
    nextlist(maxlist,maxnum,A,B,C);
      
    maxlist.splice(maxnum, 1);
  }
}
 
function nextlist(list, j, A, B, C) {
  var x, y, z;
  x = list[j][1];
  y = list[j][2];
  z = list[j][3];
  
  if (x>0) listadd(list,[A[x-1]+B[y]+C[z],x-1,y,z]);
  if (y>0) listadd(list,[A[x]+B[y-1]+C[z],x,y-1,z]);
  if (z>0) listadd(list,[A[x]+B[y]+C[z-1],x,y,z-1]);
}

function listadd(list, add) {
  var N = list.length;
  for (var i = 0; i < N; i++) {
    if (list[i][0] == add[0]) {
      if (list[i][1] == add[1]) {
        if (list[i][2] == add[2]) {
          if (list[i][3] == add[3]) return;
        }
      }
    }
  }
  list.push(add);
}

function comp(a, b) {
  if (a>b) return 1;
  if (b>a) return -1;
  return 0;
}

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