#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
struct abc {
int suma;
int nr1 , nr2 , nr3;
};
abc v [ 1000005 ];
int f [ 105 ];
int binary_search1 ( int a, int b ) {
int st , dr , med;
st = 0;
dr = b;
while ( st <= dr ) {
med = ( st + dr ) / 2;
if ( v [ med ] . suma == a )
return med;
else if ( v [ med ] . suma > a )
dr = med - 1;
else
st = med + 1;
}
return -1;
}
bool cmp1 ( abc a , abc b ){
return a . suma < b . suma;
}
int main()
{
freopen ( "loto.in" , "r" , stdin );
freopen ( "loto.out" , "w" , stdout );
int n , i , s , m , x , j;
cin >> n >> s;
for ( i = 0; i < n; i++ )
cin >> f [ i ];
j = 0;
for ( i = 0; i < n; i++ ){
for ( m = i; m < n; m++ ){
for ( x = m; x < n; x++ ){
v [ j ] . suma = f [ i ] + f [ m ] + f [ x ];
v [ j ] . nr1 = f [ i ];
v [ j ] . nr2 = f [ m ];
v [ j ] . nr3 = f [ x ];
j++;
}
}
}
sort ( v , v + j , cmp1 );
for ( x = 0; x < j; x++ ){
i = s - v [ x ] . suma;
m = binary_search1( i , j );
if ( m != -1 ) {
cout << v [ x ] . nr1 << " " << v [ x ] . nr2 << " " << v [ x ] . nr3 << " " << v [ m ] . nr1 << " " << v [ m ] . nr2 << " " << v [ m ] . nr3;
exit ( 0 );
}
}
cout << "-1";
return 0;
}