$n=<>; @s=<>=~/\d+/g; sub f{ my($n,$k)=@_; return $d{$n,$k} if $d{$n,$k}; return $d{$n,$k}=$k+1 if $n<1; return $d{$n,$k}=f($n-1,$k)+1 if $k<=$s[$n-1]; my $b=1e99; for(0..$k/2){ my $t=f($n,$_)+f($n,$k-$_-1); $b=$t if $b>$t; } return $d{$n,$k}=$b; } for$k(0..$s[$n]){ print f($n,$k),$k<$s[$n]?$":$/; }