#include <stdio.h>
#include <stdlib.h>
int c[1000001],v[101];
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int print(FILE *pg,int n,int x)
{
int ok=1,i,j,k;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
for (k=1; k<=n; k++)
if (v[i]+v[j]+v[k]==x && ok==1)
{
fprintf(pg,"%d %d %d",v[i],v[j],v[k]);
ok=0;
}
fprintf(pg," ");
return ok;
}
int main()
{
FILE *pf,*pg;
pf=fopen("loto.in","r");
pg=fopen("loto.out","w");
int n,s;
fscanf(pf,"%d %d",&n,&s);
int i,ok=1;
for (i=1; i<=n; i++)
fscanf(pf,"%d",&v[i]);
int j,k,p=0;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
for (k=1; k<=n; k++)
c[++p]=v[i]+v[j]+v[k];
qsort(c+1,p,sizeof(int),cmpfunc);
i=1;j=p;
while (i<=j)
{
if ((c[i]+c[j])==s)
{
ok=print(pg,n,c[i]);
ok=print(pg,n,c[j]);
break;
}
else
{if (c[i]+c[j]<s)
i++;
else
j--;}
}
/*int ok=1;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
for (k=1; k<=n; k++)
if (v[i]+v[j]+v[k]==nr1 && ok==1)
{
fprintf(pg,"%d %d %d",v[i],v[j],v[k]);
ok=0;
}
ok=1;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
for (k=1; k<=n; k++)
if (v[i]+v[j]+v[k]==nr2 && ok==1)
{
fprintf(pg," %d %d %d\n",v[i],v[j],v[k]);
ok=0;
}*/
if (ok==1) fprintf(pg,"-1");
return 0;
}