const fi='MONEY.INP'; fo='MONEY.OUT';
VAR
n,s,x: word;
a,kq:array[1..100] of word;
procedure nhap;
var
f: text;
i:word;
begin
assign(f,fi);reset(f);
read(f,n,s);
for i:=1 to n do
read(f,a[i]);
end;
{------------------------}
procedure sort;
var
i,j,t: word;
begin
for j:=n downto 2 do
for i:=1 to j-1 do
if a[i]<a[i+1] then
begin
t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
end;
end;
{--------------------------}
procedure xuat;
var
f: text;
i: word;
begin
assign(f,fo); rewrite(f);
if S<>0 then
write(f,-1 ) else
begin
writeln(f,x);
for i:=1 to x do
write(f,' ',kq[i] );
end;
close(f);
end;
{---------------------------}
procedure xd;
var i: word;
begin
i:=1;
x:=0;
while i<=n do
begin
if a[i]>S then inc(i) else
if a[i]=S then
begin
S:=S-a[i];
inc(x);
kq[x]:=a[i];
exit;
end else
if a[i]<S then
begin
inc(x);
kq[x]:=a[i];
S:=S-a[i];
inc(i)
end
end;
end;
{ ------------------------}
BEGIN
nhap;
sort;
xd;
xuat;
END.