#include<bits/stdc++.h>
#pragma GCC optimize("O3, Ofast, unroll-loops")
using namespace std;
const int NMAX = 105;
ifstream fin("loto1.in");
ofstream fout("loto1.out");
int v[NMAX];
struct Triplet {
int x, y, z;
};
unordered_map<int, Triplet> f;
void read_input(int &n, int &target_sum) {
fin >> n >> target_sum;
for (int i = 1; i <= n; i++)
fin >> v[i];
}
void compute_sum_frequency(const int &n) {
f.reserve(n * n * n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
int sum = v[i] + v[j] + v[k];
if (f.find(sum) == f.end())
f[sum] = {v[i], v[j], v[k]};
}
}
}
}
void compute_result(const int &n, const int &target_sum) {
for (auto [sum, triplet]: f) {
if (f.find(target_sum - sum) == f.end()) continue;
Triplet triplet2 = f[target_sum - sum];
fout << triplet.x << ' ' << triplet.y << ' ' << triplet.z << ' ' << triplet2.x << ' ' << triplet2.y << ' ' << triplet.z << '\n';
return;
}
fout << "-1\n";
}
int main() {
int n, target_sum;
read_input(n, target_sum);
compute_sum_frequency(n);
compute_result(n, target_sum);
return 0;
}