@m=((16,(15)x15)x10,(16)x16);$m[$c]|=16,!(@a=grep!($m[$c+$$_[$l=0]]&16+$ s*$$_[1]),[-1,8],[1,1],[-16,2],[16,4])?$c=pop@p:${($i,$j)=@{$a[rand@a]}; push@p,$c;$m[$c]&=~(8/$j);$m[$c+=$i]&=~$j;++$v-150||map$_-16?$_:$p&=15,@ m,$c=$s=1},$s&&select$q,$q,$q,.1*print"\ec",'_'x31,map$l++%16?($l-1-$c?$ _&2?_:$":o).($_&8?'|':_):"$/|",@m[0..160]until$c>158&$s