#include <fstream>
#include <unordered_map>
#include <iostream>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int MOD = 1117;
const int NSIZE = 100 + 10;
int x[NSIZE];
unordered_map < int , pair < int , pair < int , int > > > iH;
int i , j , k , ii , jj , kk , crt , s , N;
void inH(int i,int j,int k)
{
int crt = x[i] + x[j] + x[k];
iH[crt] = make_pair(i , make_pair(j , k));
}
bool findH(int s)
{
if (iH[s] == make_pair(0 , make_pair(0 , 0))) return false;
ii = iH[s].first;
jj = iH[s].second.first;
kk = iH[s].second.second;
}
int main()
{
fin >> N >> s;
for (i = 1 ; i <= N ; ++i)
fin >> x[i];
for (i = 1 ; i <= N ; ++i)
for (j = 1 ; j <= N ; ++j)
for (k = 1 ; k <= N ; ++k)
inH(i,j,k);
for (i = 1 ; i <= N ; ++i)
for (j = 1 ; j <= N ; ++j)
for (k = 1 ; k <= N ; ++k)
{
crt = x[i] + x[j] + x[k];
if (findH(s - crt))
{
fout << x[i] << " ";
fout << x[j] << " ";
fout << x[k] << " ";
fout << x[ii] << " ";
fout << x[jj] << " ";
fout << x[kk] << '\n';
return 0;
}
}
fout << "-1" << '\n';
return 0;
}