#include <bits/stdc++.h>
using namespace std;
int64_t sc(int64_t n) {
  int64_t res = 0;
  while (n > 0) res += n % 10, n /= 10;
  return res;
}
int32_t main() {
  ios::sync_with_stdio(false);
  int64_t n;
  cin >> n;
  string st;
  cin >> st;
  vector<int64_t> d(n);
  int64_t dt = 0;
  for (int64_t i = 0; i < st.size(); i++) {
    if (st[i] == '[') d[i] = dt++;
    if (st[i] == ']') d[i] = --dt;
  }
  int64_t maxd = 0;
  for (int64_t i : d) maxd = max(maxd, i);
  vector<int64_t> s(n);
  for (int64_t i = 0; i < n; i++) s[i] = (maxd - d[i]) * 2 + 1;
  char a[500][2 * 100 + 4] = {};
  int64_t p = 0;
  for (int64_t i = 0; i < n; i++) {
    int64_t mid = maxd + 1;
    int64_t l = mid - s[i] / 2 - 1;
    int64_t r = mid + s[i] / 2 + 1;
    a[p][l] = a[p][r] = '+';
    for (int64_t i = l + 1; i < r; i++) a[p][i] = '|';
    int64_t tt = 1 - 2 * (st[i] == ']');
    a[p + tt][l] = a[p + tt][r] = '-';
    if (i != n - 1) {
      if (st[i] == st[i + 1])
        p += 1;
      else if (st[i] == '[')
        p += 4;
      else
        p += 1;
    }
  }
  for (int64_t i = 0; i < 2 * maxd + 4; i++) {
    for (int64_t j = 0; j <= p; j++) {
      if (a[j][i] == 0)
        cout << ' ';
      else
        cout << a[j][i];
    }
    cout << '\n';
  }
  return 0;
}
