using namespace std;
#include <cstdio>
#include <algorithm>
#include <map>
#define IN "loto.in"
#define OUT "loto.out"
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define N_MAX 1<<7
int N,S;
int v[N_MAX];
int V[N_MAX*3];
inline int find(int val)
{
int p=1,q=V[0],m;
while(p<q)
{
m=(p+q)>>1;
if(val<=V[m])
q=m;
else
p=m+1;
}
if(V[p]==val)
return p;
return 0;
}
void scan()
{
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%d%d\n", &N,&S);
FOR(i,1,N)
scanf("%d", &v[i]);
}
void solve()
{
FOR(i,1,N)
FOR(j,i,N)
FOR(k,j,N)
{
V[ ++V[0] ] = v[i] + v[j] + v[k];
if(V[ V[0] ]>S) --V[0];
}
sort(V+1, V+V[0]);
FOR(ii,1,V[0])
{
int ok = find(S-V[ii]);
if(ok)
{
int k1(1),k2(1);
FOR(i,1,N)
FOR(j,i,N)
FOR(k,j,N)
{
if(!k1 && !k2)
return;
if(k1 && v[i] + v[j] + v[k] == V[ii])
printf("%d %d %d ",v[i],v[j],v[k]),k1=0;
if(k2 && v[i] + v[j] + v[k] == S-V[ii])
printf("%d %d %d ",v[i],v[j],v[k]),k2=0;
}
return;
}
}
printf("-1\n");
}
int main()
{
scan();
solve();
return 0;
}