ans,a,b:array[1..1000]of longint;
m,n,max:integer;
function conti(p:integer):integer;
var
time:integer;
i,k:integer;
begin
for i:=1 to 1000 do
b[i]:=maxlongint;
for i:=1 to p do b[a[i]]:=1;
time:=0;
repeat
inc(time);
for k:=1 to p do
if (time>a[k])and(b[time-a[k]]+1<b[time]) then
b[time]:=b[time-a[k]]+1;
until b[time]>m;
conti:=time;
end;
procedure search(i:integer);
var
j,k:integer;
begin
if i>n then begin
if conti(i-1)-1>max then
begin
max:=conti(i-1)-1;
for i:=1 to 10 do
ans[i]:=a[i];
end;
exit;
end
else begin
j:=conti(i-1);
for k:=j downto a[i-1]+1 do
begin
a[i]:=k;
search(i+1);
end;
end;
end;
procedure print;
var
i:integer;
begin
for i:=1 to 10 do
if ans[i]<>0 then write(ans[i],' ')
else break;
writeln;
writeln('MAX=',max);
end;
begin
assign(input,'in.txt');reset(input);
assign(output,'out.txt');rewrite(output);
readln(m,n);
a[1]:=1;
search(2);
print;
end.