#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
const long long N = 1e5 + 5, M = 1e9 + 7;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long n, i, j, k, mx = 0;
  string s;
  cin >> n >> s;
  vector<long long> cnt;
  k = 0;
  long long fl = 0;
  for (i = 0; i < n; i++) {
    if (s[i] == '[') {
      fl = 1;
      k++;
      cnt.push_back(1);
    } else {
      if (fl) {
        cnt.push_back(0ll);
        cnt.push_back(0ll);
        cnt.push_back(0ll);
      }
      cnt.push_back(-1);
      k--;
      fl = 0;
    }
    mx = max(mx, abs(k));
  }
  n = cnt.size();
  k = mx * 2 + 1;
  long long cnt1 = mx, cnt2 = 0;
  for (i = 0; i < n; i++) {
    if (!cnt[i]) continue;
    if (cnt[i] > 0) {
      cnt2 = cnt[i] = cnt1;
      cnt1--;
    } else {
      cnt[i] = -cnt2;
      cnt1 = cnt2;
      cnt2++;
    }
  }
  char ch[k][n];
  memset(ch, ' ', sizeof ch);
  for (i = 0; i < n; i++) {
    if (!cnt[i]) continue;
    for (j = 0; j < abs(cnt[i]); j++) {
      ch[mx + j][i] = '|';
      ch[mx - j][i] = '|';
    }
    ch[mx + j][i] = ch[mx - j][i] = '+';
    if (cnt[i] > 0) {
      ch[mx + j][i + 1] = '-';
      ch[mx - j][i + 1] = '-';
    }
    if (cnt[i] < 0) {
      ch[mx + j][i - 1] = '-';
      ch[mx - j][i - 1] = '-';
    }
  }
  for (i = 0; i < k; i++) {
    for (j = 0; j < n; j++) cout << ch[i][j];
    cout << endl;
  }
}
