#include <bits/stdc++.h>
using namespace std;
int n, i, j, d2, mx;
char s[1010][1010];
string a;
stack<int> st;
void first(int x, int y, int h1, int h2) {
  if (x == n) return;
  if (a[x] == '[') {
    s[h1][y] = '+';
    s[h1][y + 1] = '-';
    for (i = h1 + 1; i < h2; i++) {
      s[i][y] = '|';
    }
    s[h2][y] = '+';
    s[h2][y + 1] = '-';
    first(x + 1, y + 1, h1 + 1, h2 - 1);
  } else {
    if (a[x - 1] == '[')
      y += 2;
    else
      y--;
    h1--;
    h2++;
    s[h1][y] = '-';
    s[h1][y + 1] = '+';
    for (i = h1 + 1; i < h2; i++) {
      s[i][y + 1] = '|';
    }
    s[h2][y] = '-';
    s[h2][y + 1] = '+';
    first(x + 1, y + 2, h1, h2);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie();
  cin >> n >> a;
  for (i = 0; i < n; i++) {
    if (a[i] == '[')
      st.push(i);
    else {
      d2 = 0;
      for (j = st.top() + 1; j < i; j++) {
        if (a[j] == '[')
          d2++;
        else
          d2--;
        mx = max(mx, d2);
      }
      st.pop();
    }
  }
  first(0, 0, 0, (mx + 1) * 2);
  for (j = 0; j < 1000; j++) {
    if (s[0][j] != '\000') mx = j;
  }
  i = 0;
  while (s[i][0] != '\000') {
    for (j = 0; j <= mx; j++) {
      if (s[i][j] == '\000') s[i][j] = ' ';
      cout << s[i][j];
    }
    i++;
    if (s[i][0] != '\000') cout << endl;
  }
  return 0;
}
