#include <iostream>
#define FOR(i,n) for (int i=0;i<n;i++)
using namespace std;
struct Number
{
bool alt;
bool ust;
bool sagust;
bool solust;
bool orta;
bool sagalt;
bool solalt;
};
Number n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;
string str;
int n;
void g(Number &x)
{
[Link] = true;
[Link] = true;
[Link] = true;
[Link] = true;
[Link] = true;
[Link] = true;
[Link] = true;
}
void init()
{
g(n0); g(n1); g(n2); g(n3); g(n4);
g(n5); g(n6); g(n7); g(n8); g(n9);
[Link] = false; [Link] = false;
[Link] = false; [Link] = false;
[Link] = false; [Link] = false;
[Link] = false; [Link] = false;
[Link] = false; [Link] = false;
[Link] = false; [Link] = false; [Link] = false;
[Link] = false; [Link] = false;
[Link] = false;
[Link] = false; [Link] = false; [Link] = false; [Link] = false;
[Link] = false;
}
void drawhorizontalline(int n,int c)
{
cout<<" ";
FOR(i,n) cout<<"-";
if (c) cout<<" ";
else cout<<" ";
}
void drawverticalline(int n,int c)
{
cout<<"|";
if (c) FOR(i,n+2) cout<<" ";
else FOR(i,n+1) cout<<" ";
}
void drawverticalline2(int n,int c)
{
cout<<"|";
FOR(j,n) cout<<" ";
if (c) cout<<"| ";
else cout<<"|";
}
void drawverticalline3(int n,int c)
{
FOR(j,n) cout<<" ";
if (c) cout<<" | ";
else cout<<" |";
}
void ust_xett(Number num,int n,int c)
{
if ([Link]) drawhorizontalline(n,c);
else
{
if (c) FOR(i,n+3) cout<<" ";
else FOR(i,n+2) cout<<" ";
}
}
void alt_xett(Number num,int n,int c)
{
if ([Link]) drawhorizontalline(n,c);
else
{
if (c) FOR(i,n+3) cout<<" ";
else FOR(i,n+2) cout<<" ";
}
}
void orta_xett(Number num,int n,int c)
{
if ([Link]) drawhorizontalline(n,c);
else
{
if (c) FOR(i,n+3) cout<<" ";
else FOR(i,n+2) cout<<" ";
}
}
void yuxari_xett(Number num,int n,int c)
{
if ([Link] && [Link]) drawverticalline2(n,c);
else if ([Link]) drawverticalline(n,c);
else if ([Link]) drawverticalline3(n,c);
}
void asagi_xett(Number num,int n,int c)
{
if ([Link] && [Link]) drawverticalline2(n,c);
else if ([Link]) drawverticalline(n,c);
else if ([Link]) drawverticalline3(n,c);
Number ret(char s)
{
if (s == '0') return n0;
if (s == '1') return n1;
if (s == '2') return n2;
if (s == '3') return n3;
if (s == '4') return n4;
if (s == '5') return n5;
if (s == '6') return n6;
if (s == '7') return n7;
if (s == '8') return n8;
if (s == '9') return n9;
}
int main()
{
init();
while (cin>>n>>str && n != 0)
{
for (int i=0;i<[Link]();i++)
{
if (i < [Link]()-1) ust_xett(ret(str[i]) , n , 1);
else ust_xett(ret(str[i]) , n , 0);
}
cout<<endl;
FOR(i,n)
{
for (int i=0;i<[Link]();i++)
{
if (i < [Link]()-1) yuxari_xett(ret(str[i]) , n ,1);
else yuxari_xett(ret(str[i]) , n , 0);
}
cout<<endl;
}
for (int i=0;i<[Link]();i++)
{
if (i < [Link]()-1) orta_xett(ret(str[i]) , n , 1);
else orta_xett(ret(str[i]) , n , 0);
}
cout<<endl;
FOR(i,n)
{
for (int i=0;i<[Link]();i++)
{
if (i < [Link]()-1) asagi_xett(ret(str[i]) , n ,1);
else asagi_xett(ret(str[i]) , n , 0);
}
cout<<endl;
}
for (int i=0;i<[Link]();i++)
{
if (i < [Link]()-1) alt_xett(ret(str[i]) , n , 1);
else alt_xett(ret(str[i]) , n , 0);
}
cout<<endl;
}
return