#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f,*g;
int v[110],v2[330];
int i,j,q,nn,n,s,ss,n2;
struct cp{int x,y,z,nr;} mx,a[1000100];
void caut(int i, int j ,int x) {
int m;
if (i<=j) {
m=(i+j)/2;
if (a[m].nr==x) {
mx=a[m];
return ;
}
if (a[m].nr>x)
caut (i,m-1,x);
else
caut (m+1,j,x);
}
}
bool cmp(cp i,cp j) {
return (i.nr<j.nr);
}
int main() {
f=fopen("loto.in","r");
g=fopen("loto.out","w");
fscanf(f,"%d%d",&n,&s);
for (i=1;i<=n;i++) {
fscanf(f,"%d",&v[i]);
}
sort(v+1,v+n);
n2=0;
/*for (i=1;i<=n;i++)
for (j=1;j<=3;j++)
v2[++n2]=v[i];
*/
nn=0;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (q=1;q<=n;q++) {
a[++nn].nr=v[i]+v[j]+v[q];
a[nn].x=v[i];
a[nn].y=v[j];
a[nn].z=v[q];
}
bool ok=false;
/*for (i=1;i<=nn;i++)
fprintf(g,"%d\n",a[i].nr);*/
sort(a+1,a+nn,cmp);
for (i=1;i<=nn && a[i].nr<s;i++) {
ss=s-a[i].nr;
mx.nr=-1;
caut(1,nn,ss);
if (mx.nr!=-1) {
fprintf(g,"%d %d %d %d %d %d",a[i].x,a[i].y,a[i].z,mx.x,mx.y,mx.z);
ok=true;
break;
}
}
if (ok==false)
fprintf(g,"-1");
fclose(g);
return 0;
}