/* Problem 3--L-C Display
   Just a straightforward ASCII art problem. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

FILE *in, *out;

int main (int argc, char **argv);
void Print (int s, char *n);
void PrintTopDigit (int s, int d);
void PrintBottomDigit (int s, int d);
void PrintMidDigit (int s, int d);
void PrintMid1Digit (int s, int d);
void PrintMid2Digit (int s, int d);

int main (int argc, char **argv) {

  char n[10];
  int s;

 in = fopen ("prob3.in","r");
 out = fopen ("prob3.out","w");
 while (fscanf (in,"%d %s",&s,n),s>0)
  Print (s,n);
 fclose (in);
 fclose (out);
 return EXIT_SUCCESS;
}

/* Print number n of size s */
void Print (int s, char *n) {

  int i, j;

 for (i=0; i < (int)strlen (n); i++) {
  PrintTopDigit (s,n[i]-'0');
  fprintf (out,i<(int)strlen(n)-1?" ":"\n");
 }
 for (j=0; j < s; j++)
  for (i=0; i < (int)strlen (n); i++) {
   PrintMid1Digit (s,n[i]-'0');
   fprintf (out,i<(int)strlen(n)-1?" ":"\n");
  }
 for (i=0; i < (int)strlen (n); i++) {
  PrintMidDigit (s,n[i]-'0');
  fprintf (out,i<(int)strlen(n)-1?" ":"\n");
 }
 for (j=0; j < s; j++)
  for (i=0; i < (int)strlen (n); i++) {
   PrintMid2Digit (s,n[i]-'0');
   fprintf (out,i<(int)strlen(n)-1?" ":"\n");
  }
 for (i=0; i < (int)strlen (n); i++) {
  PrintBottomDigit (s,n[i]-'0');
  fprintf (out,i<(int)strlen(n)-1?" ":"\n");
 }
 fprintf (out,"\n");
}

/* These routines print specific portions of each digit */
void PrintTopDigit (int s, int d) {

  int i;

 switch (d) {
  case 6:
  case 7:
  case 8:
  case 9:
  case 0:
  case 5:
  case 3:
  case 2: fprintf (out," "); for (i=0; i < s; i++) fprintf (out,"-");
          fprintf (out," "); break;
  case 4:
  case 1: for (i=0; i < s+2; i++) fprintf (out," "); break;
 }
}

void PrintBottomDigit (int s, int d) {

  int i;

 switch (d) {
  case 6:
  case 8:
  case 9:
  case 0:
  case 5:
  case 3:
  case 2: fprintf (out," "); for (i=0; i < s; i++) fprintf (out,"-");
          fprintf (out," "); break;
  case 7:
  case 4:
  case 1: for (i=0; i < s+2; i++) fprintf (out," "); break;
 }
}

void PrintMidDigit (int s, int d) {

  int i;

 switch (d) {
  case 4:
  case 6:
  case 8:
  case 9:
  case 5:
  case 3:
  case 2: fprintf (out," "); for (i=0; i < s; i++) fprintf (out,"-");
          fprintf (out," "); break;
  case 0:
  case 7:
  case 1: for (i=0; i < s+2; i++) fprintf (out," "); break;
 }
}

void PrintMid1Digit (int s, int d) {

  int i;

 switch (d) {
  case 4:
  case 8:
  case 9:
  case 0: fprintf (out,"|"); for (i=0; i < s; i++) fprintf (out," ");
          fprintf (out,"|"); break;
  case 6:
  case 5: fprintf (out,"|"); for (i=0; i < s+1; i++) fprintf (out," ");
          break;
  case 2:
  case 3:
  case 7:
  case 1: for (i=0; i < s+1; i++) fprintf (out," ");
          fprintf (out,"|"); break;
 }
}

void PrintMid2Digit (int s, int d) {

  int i;

 switch (d) {
  case 6:
  case 8:
  case 0: fprintf (out,"|"); for (i=0; i < s; i++) fprintf (out," ");
          fprintf (out,"|"); break;
  case 2: fprintf (out,"|"); for (i=0; i < s+1; i++) fprintf (out," ");
          break;
  case 9:
  case 4:
  case 5:
  case 3:
  case 7:
  case 1: for (i=0; i < s+1; i++) fprintf (out," ");
          fprintf (out,"|"); break;
 }
}
