$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(1,1..$s[$n-1]/2){ my $t=f($n,$_)+f($n,$k-$_-1); $b=$t if $b>$t; } return $d{$n,$k}=$b; }