#include <bits/stdc++.h>
using namespace std;
char a[110];
char c[5000][5000];
vector<pair<int, int> > b;
int cursz, n, mx, center;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    if (a[i] == '[') {
      cursz++;
      mx = max(cursz, mx);
      b.push_back(make_pair(cursz, 0));
    } else {
      b.push_back(make_pair(cursz, 1));
      cursz--;
    }
  }
  for (int i = 0; i < b.size(); i++) b[i].first = mx - b[i].first + 1;
  center = mx + 1;
  int stovp = 1;
  for (int i = 0; i < b.size(); i++) {
    if (i != 0 && b[i].first == b[i - 1].first && b[i].second == 1) stovp += 3;
    for (int j = center; j <= center + b[i].first - 1; j++) c[j][stovp] = '|';
    c[center + b[i].first][stovp] = '+';
    for (int j = center; j >= center - b[i].first + 1; j--) c[j][stovp] = '|';
    c[center - b[i].first][stovp] = '+';
    if (b[i].second == 0)
      c[center + b[i].first][stovp + 1] = c[center - b[i].first][stovp + 1] =
          '-';
    else
      c[center + b[i].first][stovp - 1] = c[center - b[i].first][stovp - 1] =
          '-';
    stovp++;
  }
  for (int i = 1; i <= center * 2 - 1; i++)
    for (int j = 1; j <= stovp - 1; j++)
      if (c[i][j] != '|' && c[i][j] != '-' && c[i][j] != '+') c[i][j] = ' ';
  for (int i = 1; i <= center * 2 - 1; i++) {
    for (int j = 1; j <= stovp - 1; j++) cout << c[i][j];
    if (i != center * 2 - 1) cout << endl;
  }
}
