// multiplyMichael.java
// (More) Multiplication, MCPC 2014, Problem A
// Java solution by Michael Goldwasser

import java.io.File;
import java.util.Scanner;

public class multiplyMichael {

  static final char[][] grid = {
    {'+','-','-','-','+'},
    {'|',' ',' ','/','|'},
    {'|',' ','/',' ','|'},
    {'|','/',' ',' ','|'},
    {'+','-','-','-','+'}
  };

  public static void main(String[] argsthrows Exception {
    String file = (args.length > 0? args[0"multiply.in";
    Scanner in = new Scanner(new File(file));

    String A,B;
    while (true) {
      A = in.next();
      B = in.next();
      
      int a = Integer.parseInt(A);
      int b = Integer.parseInt(B);

      if (a == && b == 0break;

      if (a < || a > 9999 || b < || b > 9999)
        System.err.println("ERROR: Illegal operand");
      if (A.charAt(0== '0' || B.charAt(0== '0')
        System.err.println("ERROR: leading zero in operand");

      String product = Integer.toString(a*b);
      
      int latC = A.length();          // number of lattice columns
      int latR = B.length();          // number of lattice rows
      int rawC = 4*latC;          // raw number of displayed columns
      int rawR = 4*latR;          // raw number of displayed rows

      char[][] text = new char[rawR][rawC];

      for (int r=0; r < rawR; r++)
        for (int c=0; c < rawC; c++)
          text[r][c' ';

      // create outer border
      text[0][0= text[0][rawC-1= text[rawR-1][0= text[rawR-1][rawC-1'+';
      for (int r=1; r < rawR-1; r++)
        text[r][0= text[r][rawC-1'|';
      for (int c=1; c < rawC-1; c++)
        text[0][c= text[rawR-1][c'-';

      // copy operands
      for (int c=0; c < A.length(); c++)
        text[1][4+4*c= A.charAt(c);
      for (int r=0; r < B.length(); r++)
        text[4+4*r][rawC-2= B.charAt(r);

      // copy blank grid cells
      for (int r=0; r < latR; r++)
        for (int c=0; c < latC; c++)
          for (int i=0; i < 5; i++)
            for (int j=0; j < 5; j++)
              text[2+4*r+i][2+4*c+j= grid[i][j];

      // fill grid cells
      for (int r=0; r < latR; r++)
        for (int c=0; c < latC; c++) {
          int mini = (A.charAt(c'0'(B.charAt(r'0');
          text[3+4*r][3+4*c(char) (mini / 10 '0');
          text[5+4*r][5+4*c(char) (mini % 10 '0');
        }

      // place product
      String left = product.substring(0, product.length() - A.length());
      String bottom = product.substring(product.length() - A.length());
      for (int j=0; j < left.length(); j++) {
        int r = (B.length() - left.length() + j);
        text[r][1= left.charAt(j);
        text[2+r][1'/';
      }
      for (int j=0; j < bottom.length(); j++) {
        int c = * j;
        text[rawR-2][c= bottom.charAt(j);
        if (j > || left.length() 0)
          text[rawR-2][c-2'/';
      }

      for (int r=0; r < rawR; r++) {
        for (int c=0; c < rawC; c++)
          System.out.print(text[r][c]);
        System.out.println();
      }
    }
  }
}