#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;
#define PF(x) (scanf("%d",&x))
#define PT(x,y) (scanf("%d%d",&x,&y))
#define PR(x) (printf("%d\n",x))
#define PRT(x,y)(printf("%d %d\n",x,y))
#define PB(x)(scanf("%I64d",&x))
#define PRB(x)(printf("%I64d\n",(x)))
#define For(i,n) for(int i=0;i<(n);i++)
#define CLR(ar) (memset(ar,0,sizeof(ar)))
#define CLR1(ar) (memset(ar,-1,sizeof(ar)))
#define Max(x,y) (x)>(y)?(x):(y)
#define Min(x,y) (x)>(y)?(y):(x)
#define L(x) (x<<1)
#define R(x) ((x<<1)|1)
#define Mid(x,y) ((x+y)>>1)
typedef __int64 LL;
#define N 100005
#define M 105
#define Mod 1000
#define Inf 0x7fffffff
char ar[M][M];
int dist[4][2] ={0,-2,-2,0,0,2,2,0};
int d[4][2] ={0,-1,-1,0,0,1,1,0};
int maps[M][M];
int n,m;
void deal(int x,int y,int var,int mainx,int mainy )
{
ar[mainx][mainy]='O';
if(var == 1)
{
ar[mainx][mainy-1]='-';
ar[mainx][mainy-2]='H';
ar[mainx][mainy+1]='-';
ar[mainx][mainy+2]='H';
return ;
}
else if(var == -1)
{
ar[mainx-1][mainy]=ar[mainx+1][mainy]='|';
ar[mainx-2][mainy]=ar[mainx+2][mainy]='H';
return ;
}
else
{
for(int i=0;i<2;i++)
{
int dectectx = mainx+dist[i][0];
int dectecty = mainy+dist[i][1];
if(dectectx<0 ||dectecty<0||dectectx>=n ||dectecty>=m)
{
dectectx = mainx+dist[i+2][0];
dectecty = mainy+dist[i+2][1];
ar[dectectx][dectecty]='H';
ar[mainx+d[i+2][0]][mainy+d[i+2][1]]= (i==0)?'-':'|';
continue;
}
if(ar[dectectx][dectecty]==' ')
{
ar[dectectx][dectecty]='H';
if(i==0)ar[mainx+d[i][0]][mainy+d[i][1]]='-';
else ar[mainx+d[i][0]][mainy+d[i][1]]='|';
}
else
{
dectectx = mainx+dist[i+2][0];
dectecty = mainy+dist[i+2][1];
ar[dectectx][dectecty]='H';
ar[mainx+d[i+2][0]][mainy+d[i+2][1]]= (i==0)?'-':'|';
}
}
}
}
void init()
{
int t;
int k = 1;
while(scanf("%d",&t)!=EOF && t)
{
for(int i=1;i<=t;i++)
for(int j=1;j<=t;j++)
PF(maps[i][j]);
n = 5*t-(t-1);
m = n;
for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
{
if(j==m ) ar[i][j]='\0';
else ar[i][j]=' ';
}
for(int i=1;i<=t;i++)
for(int j=1;j<=t;j++)
deal(i,j,maps[i][j],4*(i-1),2+4*(j-1));
printf("Case %d:\n\n",k++);
for(int i=-1;i<=n-4;i++)
{
if(i==-1 || i== n-4)
{
for(int j=0;j<m+2;j++) printf("*");
printf("\n");
}
else
{
printf("*");
printf("%s",ar[i]);
printf("*\n");
}
}
printf("\n");
}
return ;
}
int main()
{
init();
return 0;
}
11-08