# include <stdio.h>
# include <stdlib.h>
int a[1000000],b[100],q1[1000000],q2[1000000],q3[1000000],p1,p2,s,i,j,k,ok=0,n,aux,q,m;
void poz (int li,int lj,int &k)
{
int i=li,j=lj,i1=0,j1=-1;
while (i<j)
{
if (a[i]>a[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
aux=q1[i];
q1[i]=q1[j];
q1[j]=aux;
aux=q2[i];
q2[i]=q2[j];
q2[j]=aux;
aux=q3[i];
q3[i]=q3[j];
q3[j]=aux;
aux=i1;
i1=-j1;
j1=-aux;
}
i=i+i1;
j=j+j1;
}
k=i;
}
void quick (int li,int lj)
{
if (li<lj)
{
poz (li,lj,k);
quick (li,k-1);
quick (k+1,lj);
}
}
int main ()
{
freopen ("loto.in","r",stdin);
freopen ("loto.out","w",stdout);
scanf ("%i",&n);
scanf ("%i",&s);
for (i=1;i<=n;i++)
scanf ("%i",&b[i]);
q=1;
for (i=1;i<=n;i++)
for (j=i;i<=n;i++)
for (k=j;k<=n;k++)
{
a[q]=b[i]+b[j]+b[k];
q1[q]=b[i];
q2[q]=b[j];
q3[q]=b[k];
q++;
}
m=q-1;
quick (1,m);
i=1;
j=m;
while (ok==0 && i<=j)
{
if (a[i]+a[j]==s)
{
p1=i;
p2=j;
ok=1;
}
if (a[i]+a[j]<s)
i++;
else
j--;
}
if (ok==1)
printf ("%i %i %i %i %i %i",q1[p1],q2[p1],q3[p1],q1[p2],q2[p2],q3[p2]);
else
printf ("-1");
return 0;
}