// Stiu ca sursa e gresita. O pun aici doar ca sa o am salvata. Sa nu credeti ca sunt prost!
#include <cstdio>
#include <vector>
#define mod 746773
using namespace std;
vector <int> v[mod+1];
bool find_value(int value)
{
int k=value%mod;
vector <int> :: iterator it;
for(it=v[k].begin(); it<v[k].end(); it++)
if(*it == value) return 1;
return 0;
}
void print(int *no, int &n, int x)
{
for(int m=1; m<=n; m++)
for(int p=1; p<=n; p++)
for(int q=1; q<=n; q++)
{
if(no[m]+no[p]+no[q] == x)
{
printf(" %d %d %d", no[m], no[p], no[q]);
return;
}
}
}
int main()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
int n, s, no[101];
scanf("%d%d", &n, &s);
for(int i=1; i<=n; i++) scanf("%d", &no[i]);
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
for(int r=1; r<=n; r++)
{
int x=no[i]+no[j]+no[r];
v[x%mod].push_back(x);
}
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
for(int r=1; r<=n; r++)
{
int x=s-(no[i]+no[j]+no[r]);
if(find_value(x))
{
printf("%d %d %d", no[i], no[j], no[r]);
print(no, n, x);
return 0;
}
}
printf("-1");
return 0;
}