#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cmath>

using namespace std;

#define REP(i,n) for(int i = 0; i < (int)(n); i++)
typedef long long ll;
typedef pair<int, int> pint;

int main() {
  int X, Y, Z, K; cin>>X>>Y>>Z>>K;
  vector<ll> A(X),B(Y),	C(Z);
  REP(i,X) cin>>A[i];
  REP(i,Y) cin>>B[i];
  REP(i,Z) cin>>C[i];
  vector<ll> tmp, work;
  REP(i,X) REP(j,Y) tmp.push_back(A[i]+B[j]);
  sort(tmp.begin(), tmp.end());
  reverse(tmp.begin(), tmp.end());
  int size = min(K, (int)(tmp.size()));
  REP(i,size) REP(j,Z) work.push_back(tmp[i]+C[j]);
  sort(work.begin(), work.end());
  reverse(work.begin(), work.end());
  REP(i,K) cout	<< work[i] << endl;
  return 0;
}
