#include <bits/stdc++.h>
using namespace std;
string sl;
int mx = 0;
int mxsize;
char **arr;
void num(string n) {
  int g = 3;
  for (int i = 1; i < n.length(); i++) {
    if (n[i - 1] != n[i]) {
      if (n[i] == '[')
        g += 3;
      else
        g += 2;
    } else
      g++;
  }
  mxsize = g;
  g = 0;
  for (int i = 0; i < n.length(); i++) {
    if (n[i] == '[')
      g++;
    else
      g--;
    if (mx < g) mx = g;
  }
}
void show() {
  int g = 2;
  arr[0][0] = '+';
  arr[0][1] = '-';
  arr[2 * mx][0] = '+';
  arr[2 * mx][1] = '-';
  for (int i = 1; i < 2 * mx; i++) arr[i][0] = '|';
  int k = 0;
  for (int i = 0; i < sl.length(); i++) {
    if (sl[i] == '[')
      k++;
    else
      k--;
    if (i != 0 && sl[i - 1] != sl[i]) {
      if (sl[i] == '[')
        g += 3;
      else
        g += 2;
    } else if (i != 0)
      g++;
    if (sl[i] == '[') {
      arr[k - 1][g - 2] = '+';
      arr[k - 1][g - 1] = '-';
      for (int j = k; j < 2 * mx - k + 1; j++) arr[j][g - 2] = '|';
      arr[2 * mx - k + 1][g - 2] = '+';
      arr[2 * mx - k + 1][g - 1] = '-';
    } else {
      arr[k][g] = '+';
      arr[k][g - 1] = '-';
      for (int j = k + 1; j < 2 * mx - k; j++) arr[j][g] = '|';
      arr[2 * mx - k][g] = '+';
      arr[2 * mx - k][g - 1] = '-';
    }
  }
}
int main() {
  int n;
  cin >> n;
  cin >> sl;
  num(sl);
  arr = new char *[2 * mx + 1];
  for (int i = 0; i < 2 * mx + 1; i++) {
    arr[i] = new char[mxsize];
    for (int g = 0; g < mxsize; g++) arr[i][g] = ' ';
  }
  int a = mx;
  show();
  for (int i = 0; i < 2 * mx + 1; i++) {
    for (int g = 0; g < mxsize; g++) cout << arr[i][g];
    cout << endl;
  }
  for (int i = 0; i < 2 * mx + 1; i++) delete[] arr[i];
  delete[] arr;
  return 0;
}
