t=%w{ x=[]; if@!STDIN.tty?; STDINH_line{|l|x.push(l)} B if@x.size>0; b={}; q=[d=0,0]; p=[[0,0,0,0]]; while@pJ>0; i,j,u,v=p.shift; if@i>=0&&i=0&&x[i][j]=="@"&&!b[[i,j]]; b[[i,j]]=[u,v]; n=(i<<16)+j; if@d0?2:-2; while(g<1||L(5)>0)&& (p=j+8*g)1&& (0..2).all?{|l|!$q[[q+l*2,p]]&& !$q[[q+l*2,p+8]]}; g+=1; B if@g>0; gF{|l| 3F{|u| [0,8]H{|v| $q[[i+l*f+u*2,j+l*8+v]]=1; } } }; h=L(2)*2-1; e=h*f<0; u=v=w=x=nil; gF{|l| y(d=i+l*f+2-2*h,b=j+l*8,p=d,q=b+8); y(m=d+(e@?-2*f:f),n=b+(e@?8:0),r=m+f,s=n); if@u; y(u,v,d,b); y(w,x,m,n) B u=p; v=q; w=r; x=s }; y(u=e@?i+2:w,v=e@?j:x+8,u-f,v) B B }; w=[]; zF{|l| ZF{|i| y(q=l*2,p=i*16-l%2*8,q,p+($q[[q,p]]||$q[[q,p+8]]?0:8)) }; (1..Z*2-2)H{|i| w+=l>0?[[q=l*2,p=i*8,q-2,p]]:[] } }; w=w.shuffle; 2F{|l| wH{|p,d,q,b| if(l<1|| s(0,0)!=s(z*2-2,Z*16-8))&& !$q[[p,d]]&& !$q[[q,b]]; y(p,d,q,b) B }; $q={} }; y(-2,0,0,0); y(p=z*2,q=Z*16-8,p-2,q); B $oH{|l|puts@l} }*""; 7.times{|l| t = t.gsub((64 + 2 * l).chr, ([32.chr] + %w{ end; D .times .each .size rand })[l]) }; eval t