#include <stdio.h>
long v[105],n,ns=1;
long a[1000020];
long drum[1000020],drum_aux,sum;
int auxxx[10];
//inline void swap(long &x, long &y) { int temp = x; x = y; y = temp; }
void sort(long p, long q)
{
long st = p, dr = q, m = a[(p+q)/2],t;
while (st < dr)
{
while (a[st] < m) st++;
while (a[dr] > m) dr--;
if (st <= dr) {t=a[st],a[st]=a[dr],a[dr]=t,t=drum[st],drum[st]=drum[dr],drum[dr]=t; st++;dr--;};
}
if (p < dr) sort(p,dr);
if (st < q) sort(st,q);
}
long poz(long li,long ls){
long i=li,j=ls,t;int i1=0,j1=-1;
while (i<j){
if (a[i]>a[j]){
t=a[i],a[i]=a[j],a[j]=t;
t=drum[i],drum[i]=drum[j],drum[j]=t;
t=i1;i1=-j1;j1=-t;
}
i=i+i1;
j=j+j1;
}
return i;
}
/*
void qsort(long li, long ls){
if (li<ls){
long k=poz(li,ls);
qsort(li,k-1);
qsort(k+1,ls);
}
}
*/
int gasit(long ax){
long li=1,ls=ns,m;
while (li<=ls){
m=(li+ls)/2;
if (ax>a[m]) li=m+1;
else if (ax<a[m]) ls=m-1;
else if (ax==a[m]) return m;
}
return 0;
}
int main(){
long j,k,q,aux,s;
freopen ("loto.in", "r",stdin);
freopen ("loto.out","w",stdout) ;
scanf("%ld%ld",&n,&s);
long i,t;
for(i=1;i<=n;i++) scanf("%ld",v+i);
for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
if (v[i]>v[j]) {t=v[i];v[i]=v[j];v[j]=t;}
for(i=1;i<=n;i++)for(j=i;j<=n;j++)for(q=j;q<=n;q++) {sum=v[i]+v[j]+v[q]; if (sum<s) a[ns++]=sum,drum[ns-1]=i+j*100+q*10000;}
ns--;
sort(1,ns);
v[0]=v[n];
int gata=0;
for (i=1;i<=ns && !gata;i++)
if (a[i]!=a[i-1]){
k=gasit(s-a[i]);
if (k)
{gata=1;
drum_aux=drum[i];
for (j=0;j<3;j++) auxxx[j]=drum[i]%100, drum[i]/=100;
drum[i]=drum_aux;
for (j=3;j<6;j++) auxxx[j]=drum[k]%100, drum[k]/=100;
for(j=0;j<6;j++) printf("%ld ",v[auxxx[j]]);
}
}
if (!gata) printf("-1");
return 0;
}