#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#define NMax 201
using namespace std;
int Divide(int li, int ls, int *v)
{
int st = li, dr = ls, x = v[li];
while (st < dr)
{
while (st < dr && x <= v[dr])
dr--;
v[st] = v[dr];
while (st < dr && x >= v[st])
st++;
v[dr] = v[st];
}
v[st] = x;
return st;
}
void QuickSort(int li, int ls, int *v)
{
int m = Divide(li, ls, v);
if ( li < m-1 )
QuickSort(li, m-1, v);
if ( m+1 < ls )
QuickSort(m+1, ls, v);
}
int caut(int li, int ls, int *v, int suma)
{
if (li < ls)
{
int m = (li + ls) / 2;
if (v[m] == suma)
{
return m;
}
if (v[m] < suma)
return caut(m+1, ls, v, suma);
if (v[m] > suma)
return caut(li, m-1, v, suma);
}
else
return -1;
}
int main()
{
FILE *f = fopen("loto.in", "r"), *g = fopen("loto.out", "w");
int n, v[NMax], s;
fscanf(f, "%d %d", &n, &s);
for (int i=0; i<n; i++)
{
fscanf(f, "%d", &v[i]);
}
QuickSort(0, n-1, v);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int x = 0; x < n; x++)
for (int z = 0; z < n; z++)
for (int t = 0; t < n; t++)
{
int sActual = v[i] + v[j] + v[x] + v[z] + v[t];
int ultim = caut (0, n-1, v, s-sActual);
if (ultim >= 0)
{
fprintf(g, "%d %d %d %d %d %d", v[i], v[j], v[x], v[z], v[t], v[ultim]);
fclose(f); fclose(g);
return 0;
}
}
fprintf(g, "-1");
fclose(f); fclose(g);
return 0;
}