program menu;
Uses math;
const
MAX=5005;
var
N,B,i,j,massimo : integer;
Prezzo:array[1..MAX] of integer;
tab:array[0..MAX,0..MAX] of integer;
preso:array[1..MAX] of boolean;
uscita:boolean;
begin
readln(N,B);
for i:=1 to N do readln(Prezzo[i]);
for i:=0 to N do
for j:=0 to B do tab[i,j]:=0;
for i:=1 to N do preso[i]:=false;
for i:=1 to N do
begin
for j:=1 to B do
if j<Prezzo[i] then tab[i,j]:=tab[i-1,j]
else
if tab[i-1,j]>tab[i-1,j-Prezzo[i]]+ Prezzo[i] then tab[i,j]:=tab[i-1,j]
else tab[i,j]:=tab[i-1,j-Prezzo[i]] + Prezzo[i];
end;
i:=N; massimo:=tab[N,B]; j:=massimo;
while (i>0) and (j>0) do
if tab[i,j]<>tab[i-1,j] then begin preso[i]:=true;j:=j-Prezzo[i];i:=i-1; end
else i:=i-1;
for i:=1 to B do if preso[i]=true then writeln (Prezzo[i]);
end.
cHJvZ3JhbSBtZW51OwpVc2VzIG1hdGg7CmNvbnN0CiAgICAgTUFYPTUwMDU7CnZhcgogICAgTixCLGksaixtYXNzaW1vIDogaW50ZWdlcjsKICAgIFByZXp6bzphcnJheVsxLi5NQVhdIG9mIGludGVnZXI7CiAgICB0YWI6YXJyYXlbMC4uTUFYLDAuLk1BWF0gb2YgaW50ZWdlcjsKICAgIHByZXNvOmFycmF5WzEuLk1BWF0gb2YgYm9vbGVhbjsKICAgIHVzY2l0YTpib29sZWFuOwpiZWdpbgoJcmVhZGxuKE4sQik7Cglmb3IgaTo9MSB0byBOIGRvIHJlYWRsbihQcmV6em9baV0pOwoJZm9yIGk6PTAgdG8gTiBkbyAKCSAgICAgICAgICBmb3Igajo9MCB0byBCIGRvIHRhYltpLGpdOj0wOwoJZm9yIGk6PTEgdG8gTiBkbyBwcmVzb1tpXTo9ZmFsc2U7ICAgICAgICAgIAoJZm9yIGk6PTEgdG8gTiBkbwoJICAgICAgICAgICAgYmVnaW4KCSAgICAgICAgICAgICAgZm9yIGo6PTEgdG8gQiBkbyAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgajxQcmV6em9baV0gdGhlbiB0YWJbaSxqXTo9dGFiW2ktMSxqXQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0YWJbaS0xLGpdPnRhYltpLTEsai1QcmV6em9baV1dKyBQcmV6em9baV0gdGhlbiB0YWJbaSxqXTo9dGFiW2ktMSxqXSAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGFiW2ksal06PXRhYltpLTEsai1QcmV6em9baV1dICsgUHJlenpvW2ldOwogICAgICAgICAgICAgIGVuZDsgICAgICAgICAgICAgICAgICAgCiAgICBpOj1OOyAgbWFzc2ltbzo9dGFiW04sQl07IGo6PW1hc3NpbW87CiAgICB3aGlsZSAoaT4wKSBhbmQgKGo+MCkgZG8gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0YWJbaSxqXTw+dGFiW2ktMSxqXSB0aGVuIGJlZ2luIHByZXNvW2ldOj10cnVlO2o6PWotUHJlenpvW2ldO2k6PWktMTsgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpOj1pLTE7CiAgIGZvciBpOj0xIHRvIEIgIGRvIGlmIHByZXNvW2ldPXRydWUgdGhlbiB3cml0ZWxuIChQcmV6em9baV0pOyAgCiBlbmQuICA=