#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <unordered_map>
using namespace std;
int n, s;
int a[105];
struct triple {
int x, y, z;
};
unordered_map<int, triple> m;
int main() {
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
scanf("%d %d", &n, &s);
for (int i = 0; i < n; ++i) {
int x;
scanf("%d", &x);
a[i] = x;
}
for (int i = 0; i < n; ++i) {
m[a[i] * 3] = { i , i, i };
for (int j = i + 1; j < n; ++j) {
m[a[i] * 2 + a[j]] = { i, i, j };
m[a[i] + 2 * a[j]] = { i, j ,j };
for (int k = j + 1; k < n; ++k) {
m[a[i] + a[j] + a[k]] = { i, j, k };
}
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
for (int k = 0; k < n; ++k) {
int x = s - a[i] - a[j] - a[k];
if (x <= 0) {
continue;
}
if (m.count(x) > 0) {
auto t = m[x];
printf("%d %d %d %d %d %d", a[t.x], a[t.y], a[t.z], a[i], a[j], a[k]);
return 0;
}
}
}
}
printf("-1");
return 0;
}