#include <bits/stdc++.h>
using namespace std;
const int maxn = 500500;
char res[1000][1000];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  string s;
  cin >> s;
  for (int i = 0; i < 1000; ++i)
    for (int j = 0; j < 1000; ++j) res[i][j] = ' ';
  int max_dep = 0;
  int cnt = 0;
  for (auto c : s) {
    if (c == '[')
      cnt++;
    else
      cnt--;
    max_dep = max(max_dep, cnt);
  }
  int mid = 500;
  int c = 0;
  char prev = '*';
  for (auto ch : s) {
    if (ch == '[') {
      cnt++;
      int h = 2 * (max_dep - cnt + 1) - 1;
      res[mid][c] = '|';
      int i = mid - 1;
      while (mid - i <= h / 2) res[i--][c] = '|';
      res[i][c] = '+';
      res[i][c + 1] = '-';
      i = mid + 1;
      while (i - mid <= h / 2) res[i++][c] = '|';
      res[i][c] = '+';
      res[i][c + 1] = '-';
      c++;
    } else {
      if (prev != ch) c += 3;
      int h = 2 * (max_dep - cnt + 1) - 1;
      res[mid][c] = '|';
      int i = mid - 1;
      while (mid - i <= h / 2) res[i--][c] = '|';
      res[i][c] = '+';
      res[i][c - 1] = '-';
      i = mid + 1;
      while (i - mid <= h / 2) res[i++][c] = '|';
      res[i][c] = '+';
      res[i][c - 1] = '-';
      c++;
      cnt--;
    }
    prev = ch;
  }
  int h = 2 * max_dep - 1;
  for (int i = mid - h / 2 - 1; i <= mid + h / 2 + 1; ++i) {
    for (int j = 0; j < c; ++j) cout << res[i][j];
    cout << '\n';
  }
  return 0;
}
