$n=<>-1; @m=0..<>-1; @1=map[glob],<>; sub f{ my($a)=@_; return if $a<2; return if $u{$a}; my $b=int$a/2; my $c=$a-$b; f($b); f($c); for$y(@m){ for$x(@m){ for$z(@m){ if($$a[$x][$y]<$$b[$x][$z]+$$c[$z][$y]){ $$a[$x][$y]=$$b[$x][$z]+$$c[$z][$y]; } } } } $u{$a}=1; } f($n); $r=0; for$y(@m){ for$x(@m){ if($r<$$n[$x][$y]){ $r=$$n[$x][$y]; } } } print$r;