//考察点: 纯模拟
//思路: 大概听别人说过解题的方向
//提交情况: 2WA 1AC
第一次错在 两个case之间没有空格(实际上应该有)
第二次错在 最后一个case多了一个回车(实际上应该没有)
//收获: 对枚举更加熟悉了
//经验: 写完代码仍然需要静态观察 纠结很久的代码需要静下心来一个个模块严重
//ACcode:
//终于AC 啊啊啊啊啊啊
#include<stdio.h>
#include<string.h>
#include<memory.h>
char a[5][30] = {
{'#','-','#','#',' ','#','#','-','#','#','-','#','#',' ','#','#','-','#','#','-','#','#','-','#','#','-','#','#','-','#'},
{'|',' ','|','#',' ','|','#',' ','|','#',' ','|','|',' ','|','|',' ','#','|',' ','#','#',' ','|','|',' ','|','|',' ','|'},
{'#',' ','#','#',' ','#','#','-','#','#','-','#','#','-','#','#','-','#','#','-','#','#',' ','#','#','-','#','#','-','#'},
{'|',' ','|','#',' ','|','|',' ','#','#',' ','|','#',' ','|','#',' ','|','|',' ','|','#',' ','|','|',' ','|','#',' ','|'},
{'#','-','#','#',' ','#','#','-','#','#','-','#','#',' ','#','#','-','#','#','-','#','#',' ','#','#','-','#','#','-','#'}};
void output(int size,char t[])
{
int cnt,i,j,k,tt,mark,len=strlen(t),n=0;
char *p = t;
while(*p)
{
*p -= '0';
p++;
}
for(i=0;i<5;i++)
{
if(i%2 == 0) //even
{
for(cnt=3*t[n];n<len;cnt=3*t[++n])
{
for(j=cnt,mark = cnt;j<cnt+3;j++)
{
if(a[i][j] == '#') printf(" ");
else for(k=0;k<size;k++) printf("%c",a[i][j]);
if(j == mark+2 && n != len-1) printf(" ");
}
}
n=0;
printf("\n");
}
else //odd
{
for(tt=0;tt<size;++tt)
{
for(cnt=3*t[n];n<len;cnt=3*t[++n])
{
for(j=cnt,mark=cnt;j<cnt+3;j++)
{
if(a[i][j] == '#') printf(" ");
else if(a[i][j] == '|') {printf("|");}
else for(k=0;k<size;k++) printf("%c",a[i][j]);
if(j == mark+2 && n != len-1) printf(" ");
}
}
n=0;
printf("\n");
}
}
}
}
int main()
{
int n;
char tmp[11];
while(1)
{
scanf("%d %s",&n,tmp);
if(n == 0 && !strcmp(tmp,"0")) break;
output(n,tmp);
printf("\n");
memset(tmp,0,sizeof(tmp));
}
return 0;
}