t=%w{if@STDIN.tty?;i=ARGV;z=[i[0]&&i[0].to_i-3||18,14].max;Z=[i[1]&&i[1].to _i-2||64,32].max/16;z=(z-(z+2)%4)/2;if@i[2];sF@i[2].to_i;B$p={};$o=[];$q={};de f@s(d,b);p=[d,b];while$p[p]&&$p[p]!=p;p=$p[p]Breturn@p;B def@y(d,i,b,q);p =s(d,i);q=s(b,q);if@p!=q;$p[p]=$p[q]=[p,q].min;if@d ==b;4H {|l|$o[d+l ][i+8,2]="'@@."[l]*2};else;o=[d,b].max;if$q[p ]&&$q[q];2H{|l|$o[ o+l] [i+2,6]="@"*6};else$o[o][i+4,2]="@,@"[( i%16/8)^(o%4/2),2] ;$o[ o+1] [i+4,2]="@@"BBBBI=(";@.;;;.@;;'@; @';;;.@;@.;;@';;;' @';.@;@.;@ @';; ;'@@@@@'@@@".split(//).map{ |l|l*2})*"";(z*2)H {|l|$o+=[I[l%4*1 6,16 ]*Z]};$o[0]=$o[0].gsu b(/;;@/,"@@@");$o[ 1]=$o[1].gsub(/;;;;'' /,". .;;''");3H{|l|$ o+=[I[(l+4)*16,16] *Z]};$oLH{|l|$o[l]+="@.'@"[l %4]* 2};zH{|l| (Z*2)H{|i|p=[l*2,i *8];$p[p]=p}};O=(Z *2)*z+1;OH {if$ qL< O*0.4;i=F(z-5)*2;j =F(Z-2)*16+(i%4<2? 16:8 );g=0;f=F( 2)>0 ?2: -2;w hile(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;Bif@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=ni l;gH{|l| y(d=i+l*f+ (h>0 ?0:4),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)BB };w=[];zH{|l|ZH{|i |y(q=l*2 ,p=i*16-l% 2*8, q,p+(!$q[[q,p]]&&!$q[[q,p+8 ]]?8:0))};(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);else;x=[];STDINJ_line{| l|x.push(l )};b={ };d= 0;q=[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@d