#include <bits/stdc++.h>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int i, j, k, n, s, a[105], suma[250005], r, suma_partiala, verificare;
int cautare(int x, int r, int suma[])
{
int st = 1,dr = r, m;
while (st != dr)
{
m = (st + dr) / 2;
if (x > suma[m])
st = m + 1;
else
dr = m;
}
if (x == suma[st])
return 1;
return 0;
}
void diferenta(int x, int n, int a[])
{
int i, j, k;
for (i = 1; i <= n; i++)
for (j = i; j <= n; j++)
for (k = j; k <= n; k++)
if (a[i] +a [j] + a[k] == x)
out << a[i] << " " << a[j] << " " << a[k] << " ";
}
int main()
{
in >> n >> s;
for (i = 1; i <= n; i++)
in >> a[i];
for (i = 1; i <= n; i++)
for (j = i; j <= n; j++)
for (k = j; k <= n; k++)
suma[++r] = a[i] + a[j] + a[k];
sort(suma + 1, suma + r + 1);
for (i = 1; i <= n; i++)
{
if (verificare == 1)
break;
for (j = i; j <=n ; j++)
{
if (verificare == 1)
break;
for (k = j; k <= n; k++)
{
suma_partiala = a[i] + a[j] + a[k];
if (cautare(s - suma_partiala, r, suma))
{
out << a[i] << " " << a[j] << " " << a[k] << " ";
diferenta(s - suma_partiala, n, a);
verificare = 1;
break;
}
}
}
}
if (verificare == 0)
out << "-1";
in.close();
out.close();
return 0;
}