#include <bits/stdc++.h>
using namespace std;
char m[1000][1000];
int main() {
  int n, count = 0, max = 0, k, r = 0;
  char c[100000];
  bool l = true;
  string s;
  for (int i = 0; i < 1000; i++)
    for (int y = 0; y < 1000; y++) m[i][y] = ' ';
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> c[i];
    if (c[i] == '[') {
      count++;
    } else {
      if (count > max) max = count;
      count--;
    }
  }
  m[0][0] = '+';
  m[0][1] = '-';
  for (int i = 1; i < max * 2; i++) m[i][0] = '|';
  m[max * 2][0] = '+';
  m[max * 2][1] = '-';
  k = 0;
  for (int i = 1; i < n; i++) {
    if (c[i] == '[') {
      if (l) max--, k++;
      r++;
      m[k][r] = '+';
      m[k][r + 1] = '-';
      for (int y = k + 1; y < k + max * 2; y++) m[y][r] = '|';
      m[k + max * 2][r] = '+';
      m[k + max * 2][r + 1] = '-';
      l = true;
    } else {
      if (!l) max++;
      if (l)
        r += 4;
      else
        k--, r++;
      m[k][r] = '+';
      m[k][r - 1] = '-';
      for (int y = k + 1; y < k + max * 2; y++) m[y][r] = '|';
      m[k + max * 2][r] = '+';
      m[k + max * 2][r - 1] = '-';
      l = false;
    }
  }
  for (int i = 0; i < max * 2 + 1; i++) {
    for (int y = 0; y < r + 1; y++) cout << m[i][y];
    ;
    cout << endl;
  }
  return 0;
}
