// 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[] args) throws 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 == 0 && b == 0) break;

      if (a < 1 || a > 9999 || b < 1 || 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 = 5 + 4*latC;          // raw number of displayed columns
      int rawR = 5 + 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 = 5 + 4 * (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 = 3 + 4 * j;
        text[rawR-2][c] = bottom.charAt(j);
        if (j > 0 || 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();
      }
    }
  }
}