#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <map>
using namespace std;
int n, s;
int a[105];
struct triple {
int x, y, z;
};
map<int, int> 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) {
for (int j = 0; j < n; ++j) {
for (int k = 0; k < n; ++k) {
m[a[i] + a[j] + a[k]] = i;//{ 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;
}