#include <iostream>
#include <unordered_set>
#include <fstream>
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
const int NMAX = 100;
int n,s;
int a[NMAX+1];
unordered_set <int> uset,hashmp;
void input(){
fin >> n >> s;
for (int i=1;i<=n;++i)
fin >> a[i];
}
void print(int x){
for (int i=1;i<=n;++i){
int target = x - a[i];
for (int j=1;j<=n;++j){
int num = a[j];
if (hashmp.find(target - num) != hashmp.end()){
fout << a[i] << ' ' << num << ' ' << target - num << ' ';
return;
}
}
}
}
void solve(){
for (int i=1;i<=n;++i)
hashmp.insert(a[i]);
int sum;
for (int i=1;i<=n;++i)
for (int j=i;j<=n;++j)
for (int k=j;k<=n;++k){
sum = a[i] + a[j] + a[k];
uset.insert(sum);
}
int a = -1, b = -1;
for (int num:uset){
int complement = s - num;
if (uset.find(complement) != uset.end()){
a = num, b = complement;
break;
}
}
if (a == -1 || b == -1){
fout << -1;
return;
}
print(a);
print(b);
}
int main()
{
input();
solve();
return 0;
}