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
****************************************************************/