using namespace std;
char zfx[501][501]={'.'};
int m,n;
int g[101][101];
void make_zfx(int x,int y)
{
zfx[x][y]=zfx[x][y+4]=zfx[x-3][y]=zfx[x-3][y+4]=zfx[x-5][y+2]=zfx[x-5][y+6]='+';
zfx[x-1][y]=zfx[x-2][y]=zfx[x-1][y+4]=zfx[x-2][y+4]='|';
zfx[x][y+1]=zfx[x][y+2]=zfx[x][y+3]='-';
zfx[x-3][y+1]=zfx[x-3][y+2]=zfx[x-3][y+3]='-';
zfx[x-5][y+3]=zfx[x-5][y+4]=zfx[x-5][y+5]='-';
zfx[x-4][y+1]=zfx[x-4][y+5]='/';
zfx[x-1][y+5]='/';
zfx[x-2][y+6]='+';
zfx[x-3][y+6]=zfx[x-4][y+6]='|';
zfx[x-2][y+5]=zfx[x-3][y+5]=' ';
zfx[x-1][y+1]=zfx[x-1][y+2]=zfx[x-1][y+3]=zfx[x-2][y+1]=zfx[x-2][y+2]=zfx[x-2][y+3]=' ';
zfx[x-4][y+2]=zfx[x-4][y+3]=zfx[x-4][y+4]=' ';
}
void fun(int a,int x,int y)
{
int p=a,i=x,j=y;
while (p-->0)
{
make_zfx(i,j);
i=i-3;
}
}
void work()
{
int a=50,b=50;
for (int i=0;i<m;i++)
{
int x=a,y=b;
for (int j=0;j<n;j++)
{
fun(g[i][j],x,y);
y+=4;
}
a+=2;
b-=2;
}
}
int main()
{
cin>>m>>n;
for (int i=0;i<501;i++)
for (int j=0;j<501;j++)
zfx[i][j]='.';
for (int i=0;i<m;i++)
for (int j=0;j<n;j++)
cin>>g[i][j];
work();
int sx=-1,sy=-1,fx=-1,fy=-1;
for (int i=0;i<501;i++)
{
for (int j=0;j<501;j++)
if (zfx[i][j]!='.') {sx=i;break;}
if (sx==i) break;
}
for (int i=500;i>=0;i--)
{
for (int j=0;j<501;j++)
if (zfx[i][j]!='.') {fx=i;break;}
if (fx==i) break;
}
for (int i=0;i<501;i++)
{
for (int j=0;j<501;j++)
if (zfx[j][i]!='.') {sy=i;break;}
if (sy==i) break;
}
for (int i=500;i>=0;i--)
{
for (int j=0;j<501;j++)
if (zfx[j][i]!='.') {fy=i;break;}
if (fy==i) break;
}
for (int i=sx;i<=fx;i++)
{
for (int j=sy;j<=fy;j++)
printf("%c",zfx[i][j]);
printf("\n");
}
return 0;
}