#include <bits/stdc++.h>
const int INF = 1e9;
const long long lINF = 9223372036854775807;
using namespace std;
ifstream in;
ofstream out;
int main() {
  in.open("input.txt");
  out.open("output.txt");
  long long n;
  cin >> n;
  string s = "";
  cin >> s;
  long long h = 0;
  vector<long long> st;
  st.reserve(n);
  long long cnt = 1;
  for (int i = 0; i < (n); i++) {
    char c = s[i];
    if (c == ']') {
      h = max(h, cnt);
      st.pop_back();
      cnt += 2;
    } else {
      if (cnt > 1) cnt -= 2;
      st.push_back(i);
    }
  }
  vector<vector<char>> a(5000, vector<char>(h + 2, ' '));
  char lc = '[';
  long long x = 0, y = 1;
  for (int i = 0; i < (n); i++) {
    char c = s[i];
    if (c == ']') {
      if (c != lc) y--, x += 3, h += 2;
      a[x][y - 1] = '+';
      a[x - 1][y - 1] = '-';
      for (int j = (y); j < (y + h); j++) a[x][j] = '|';
      a[x][y + h] = '+';
      a[x - 1][y + h] = '-';
      y--;
      x++;
      h += 2;
      lc = c;
    } else {
      if (lc != c) y++, h -= 2;
      a[x][y - 1] = '+';
      a[x + 1][y - 1] = '-';
      for (int j = (y); j < (y + h); j++) a[x][j] = '|';
      a[x][y + h] = '+';
      a[x + 1][y + h] = '-';
      y++;
      x++;
      h -= 2;
      lc = c;
    }
  }
  for (int i = (0); i < (h); i++) {
    for (int j = (0); j < (x); j++) cout << a[j][i];
    cout << endl;
  }
  return 0;
}
