var i,j,k,l,m,n,p,q,x0,y0:longint; a,pa:array[1..1000,1..1000]of char; b:array[1..6,1..7]of char; c:array[1..1000,1..7]of char; shu:array[1..100,1..100]of longint; procedure yige; begin b[1,3]:='+';b[1,7]:='+';b[3,1]:='+';b[3,5]:='+';b[6,1]:='+'; b[6,5]:='+';b[4,7]:='+'; b[1,4]:=chr(45);b[1,5]:=chr(45);b[1,6]:=chr(45); b[3,2]:=chr(45);b[3,3]:=chr(45);b[3,4]:=chr(45); b[6,2]:=chr(45);b[6,3]:=chr(45);b[6,4]:=chr(45); b[2,2]:=chr(47);b[2,6]:=chr(47);b[5,6]:=chr(47); b[2,7]:=chr(124);b[3,7]:=chr(124); b[4,1]:=chr(124);b[4,5]:=chr(124); b[5,1]:=chr(124);b[5,5]:=chr(124); b[2,3]:=' '; b[2,4]:=' '; b[2,5]:=' '; b[4,2]:=' '; b[4,3]:=' '; b[4,4]:=' '; b[5,2]:=' '; b[5,3]:=' '; b[5,4]:=' '; b[3,6]:=' ';b[4,6]:=' ';b[1,1]:='.';b[1,2]:='.';b[2,1]:='.'; b[6,6]:='.';b[6,7]:='.';b[5,7]:='.'; end; procedure yilie(x:longint); var d,e,f,g:longint; begin d:=x*3+3; for e:=1 to 6 do for f:=1 to 7 do c[e,f]:=b[e,f]; for e:=1 to x do for f:=e*3+1 to e*3+6 do for g:=1 to 7 do if (c[f,g]='.') then c[f,g]:=c[f-3,g]; c[d,6]:='.';c[d,7]:='.';c[d-1,7]:='.'; k:=d; end; procedure yipai(x:longint); var d,e,f,g:longint; begin d:=n; while shu[x,d]=0 do d:=d-1; p:=d;e:=0; for d:=1 to p do if shu[x,d]>e then e:=shu[x,d]; d:=e*3+3; for e:=1 to p do begin for f:=1 to shu[x,e]*3+3 do for g:=1 to 7 do c[f,g]:='.'; yilie(shu[x,e]); for f:=d downto d-k+1 do begin for g:=1 to 7 do if not(c[f+k-d,g]='.')then pa[f,(e-1)*4+g]:=c[f+k-d,g]; end; end; l:=d; p:=p*4+3; end; procedure yidui ; var d,e,f,g:longint; begin x0:=0;y0:=0;l:=0; while l=0 do begin for i:=1 to 1000 do for j:=1 to 1000 do pa[i,j]:='.'; yipai(m); if l=0 then m:=m-1; end; l:=0;q:=1; while l=0 do begin for i:=1 to 1000 do for j:=1 to 1000 do pa[i,j]:='.'; yipai(q); if l=0 then q:=q+1; end; for d:=q to m do begin for i:=1 to 1000 do for j:=1 to 1000 do pa[i,j]:='.'; yipai(d); if l+(m-d+1)*2-2>x0 then x0:=l+(m-d+1)*2-2; if p+(m-d+1)*2-2>y0 then y0:=p+(m-d+1)*2-2; end; for d:=m downto q do begin for i:=1 to 1000 do for j:=1 to 1000 do pa[i,j]:='.'; yipai(d); for i:=x0-l+1-(m-d+1)*2+2 to x0-(m-d+1)*2+2 do for j:=1+(m-d+1)*2-2 to p+(m-d+1)*2-2 do if a[i,j]='.' then a[i,j]:=pa[i-x0+l+((m-d+1)*2-2),j-((m-d+1)*2-2)]; end; end; begin yige; readln(m,n); for i:=1 to m do begin for j:=1 to n do read(shu[i,j]); readln; end; for i:=1 to 1000 do for j:=1 to 1000 do a[i,j]:='.'; yidui; for i:=1 to x0 do begin for j:=1 to y0 do write(a[i,j]); writeln; end; { yipai(1); for i:=1 to l do begin for j:=1 to p do write(pa[i,j]); writeln; end;} end. /************************************************************** Problem: 2279 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/