sub d{for(1..$d){for$p(0..2){{$s=$$p[$d-$_]||"|";$f=$"x(($d*2-1-length$s )/2);printf"$f$s$f"}}print$/;}select$q,$q,$q,(print$/)/3}push@0,"-"x(1-2 *$_)for-($d=shift||3)+1..0;sub h{my($n,$s,$d,$i)=@_;if($n>0){h($n-1,$s,$ i,$d);push@$d,pop@$s;d;h($n-1,$i,$d,$s)}}d;h($d,0,2,1)