sub smart { my $t=sum @_; if ($t%2) { my $i=($t-1)/2; ($i -= $_[$_])<0 and return $_ for 0..$#_; } else { my $acc=0; for my $i ($t/2-1, $t/2) { for (0..$#_) { ($acc += $_), last if ($i -= $_[$_])<0; } } return $acc/2; } }