#include <fstream>
#include <unordered_map>
using namespace std;
const int Nmax = 105;
int n, a[Nmax];
long long s;
struct triplet{
int i, j, k;
};
unordered_map <int, triplet> sume;
int main()
{
ifstream fin("loto.in");
ofstream fout("loto.out");
fin >> n >> s;
for(int i = 1; i <= n; i++){
fin >> a[i];
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
for(int k = 1; k <= n; k++){
sume[a[i]+a[j]+a[k]] = {a[i], a[j], a[k]};
}
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
for(int k = 1; k <= n; k++){
int dif = s - a[i] - a[j] - a[k];
if(sume.count(dif)){
triplet x = sume[dif];
fout << a[i] << ' ' << a[j] << ' ' << a[k] << ' ' << x.i << ' ' << x.j << ' ' << x.k << endl;
return 0;
}
}
}
}
fout << -1;
return 0;
}