#include <iostream>
#include <vector>
using namespace std;
// Funcion para realizar la DFS
void calcula_sumas(int pos, int sum, vector<int>& valores, int objetivo) {
// Revisar si el estado actual es una respuesta
if (sum >= objetivo) {
cout << sum << " ";
}
// Revisar estado invalido
if (pos >= valores.size()) {
return;
}
// Probar con todas las opciones disponibles
// a) NO incluir el elemento actual en la suma
calcula_sumas(pos + 1, sum, valores, objetivo);
// b) SI incluir el elemento actual en la suma
calcula_sumas(pos + 1, sum + valores[pos], valores, objetivo);
// NOTA: cuando se tienen varias opciones, se puede hacer los siguiente
// for (int opcion = 0; opcion < opciones.size(); opcion++) {
// hacer algo con los valores de opciones[opcion]
// calcula_sumas(...)
// }
}
int main() {
int n;
int x;
cin >> n >> x;
vector<int> valores(n);
for (int i = 0; i < valores.size(); i++) {
cin >> valores[i];
}
calcula_sumas(0, 0, valores, x);
return 0;
}