t=%w{ x=[]; if@!STDIN.tty?; STDINJ_line{|l|x.push(l)} B if@x.size>0; b={}; q=[d=0,0]; p=[[0,0,0,0]]; while@pL>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||F(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; gH{|l| 3H{|u| [0,8]J{|v| $q[[i+l*f+u*2,j+l*8+v]]=1; } } }; h=F(2)*2-1; e=h*f<0; u=v=w=x=nil; gH{|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=[]; zH{|l| ZH{|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)J{|i| w+=l>0?[[q=l*2,p=i*8,q-2,p]]:[] } }; w=w.shuffle; 2H{|l| wJ{|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 $oJ{|l|puts@l} }*""; 7.times{|l| t = t.gsub((64 + 2 * l).chr, ([32.chr] + %w{ end; D rand .times .each .size })[l]) }; eval t