#include <fstream>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
const int NMAX = 10000005;
int v[105],n;
int S[NMAX];
bool gasit(int x)
{
int lo=1, hi=n, mid;
while (lo<=hi)
{
mid = lo+(hi-lo)/2;
if (S[mid] == x)
return 1;
if (S[mid]<x)
lo = mid+1;
else
hi = mid-1;
}
mid = lo+(hi-lo)/2;
if (S[mid] > x)
mid--;
if (S[mid] == x)
return 1;
return 0;
}
int main()
{
int n,s,i,j,k,i2,j2,k2,z=0;
in >> n >> s;
for (i = 0; i<n; i++)
in >> v[i];
for (i = 0; i<n; i++)
for (j = i; j<n; j++)
for (k = j; k<n; k++)
S[z++] = v[i]+v[j]+v[k];
for (i = 0; i<n; i++)
for (j = i; j<n; j++)
for (k = j; k<n; k++){
int dif = s-v[i]-v[j]-v[k];
if (gasit(dif))
{
out << v[i] << " " << v[j] << " " << v[k] << " ";
for (i2 = 0; i2<n; i2++)
for (j2 = i2; j2<n; j2++)
for (k2 = j2; k2<n; k2++)
if (v[i2]+v[j2]+v[k2] == dif){
out << v[i2] << " " << v[j2] << " " << v[k2];
return 0;}
}
}
out << "-1";
}