#include <bits/stdc++.h>
using namespace std;
int n;
char corchetes[105];
int main() {
  scanf("%d %s", &n, corchetes);
  int nivel = 0, maxi = 0, alturaMax, juntos = 0, ancho;
  for (int i = 0; i < n; ++i) {
    if (corchetes[i] == '[')
      nivel++;
    else
      nivel--;
    if (corchetes[i] == '[' && corchetes[i + 1] == ']') juntos++;
    if (nivel > maxi) maxi = nivel;
  }
  alturaMax = maxi * 2 + 1;
  ancho = n - (juntos * 2) + juntos * 5;
  char ans[alturaMax][ancho + 1];
  for (int i = 0; i < alturaMax; ++i) {
    for (int j = 0; j < ancho; ++j) {
      ans[i][j] = ' ';
    }
  }
  for (int i = 0; i < alturaMax; ++i) {
    ans[i][ancho] = '\0';
  }
  int inicio = 0, final = alturaMax - 1, posJ = 0;
  for (int i = 0; i < n; ++i) {
    if (corchetes[i] == '[' && corchetes[i + 1] == ']') {
      ans[inicio][posJ] = '+';
      ans[inicio][posJ + 1] = '-';
      ans[inicio][posJ + 3] = '-';
      ans[inicio][posJ + 4] = '+';
      ans[final][posJ] = '+';
      ans[final][posJ + 1] = '-';
      ans[final][posJ + 3] = '-';
      ans[final][posJ + 4] = '+';
      for (int i = inicio + 1; i < final; i++) {
        ans[i][posJ] = '|';
        ans[i][posJ + 4] = '|';
      }
      posJ += 5;
      if (corchetes[i + 2] != '[') {
        inicio--;
        final++;
      }
      i++;
    } else {
      if (corchetes[i] == '[') {
        ans[inicio][posJ] = '+';
        ans[inicio][posJ + 1] = '-';
        ans[final][posJ] = '+';
        ans[final][posJ + 1] = '-';
        for (int i = inicio + 1; i < final; i++) {
          ans[i][posJ] = '|';
        }
        posJ++;
        inicio++;
        final--;
      } else {
        ans[inicio][posJ] = '+';
        ans[inicio][posJ - 1] = '-';
        ans[final][posJ] = '+';
        ans[final][posJ - 1] = '-';
        for (int i = inicio + 1; i < final; i++) {
          ans[i][posJ] = '|';
        }
        posJ++;
        if (corchetes[i + 1] == ']') {
          inicio--;
          final++;
        }
      }
    }
  }
  for (int i = 0; i < alturaMax; i++) {
    cout << ans[i] << endl;
  }
  return 0;
}
