#include <bits/stdc++.h>
using namespace std;
const int base = 1000 * 1000 * 1000;
using namespace std;
int a[100001], visited[100001];
vector<int> g[100001];
bool flag = false;
int n, maxlen = 1;
int len[101];
char res[300][300];
string s;
int main() {
  memset(res, ' ', sizeof(res));
  cin >> n >> s;
  int curlen = 0;
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == '[') curlen++;
    len[i] = curlen;
    if (s[i] == ']') curlen--;
    maxlen = max(curlen, maxlen);
  }
  int cur_pos = 0;
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == '[' && s[i + 1] == ']') {
      res[len[i] - 1][cur_pos] = '+';
      res[len[i] - 1][cur_pos + 1] = '-';
      for (int j = len[i]; j <= len[i] + (maxlen - len[i]) * 2; j++)
        res[j][cur_pos] = '|';
      res[len[i] + (maxlen - len[i]) * 2 + 1][cur_pos] = '+';
      res[len[i] + (maxlen - len[i]) * 2 + 1][cur_pos + 1] = '-';
      res[len[i] - 1][cur_pos + 4] = '+';
      res[len[i] - 1][cur_pos + 3] = '-';
      for (int j = len[i]; j <= len[i] + (maxlen - len[i]) * 2; j++)
        res[j][cur_pos + 4] = '|';
      res[len[i] + (maxlen - len[i]) * 2 + 1][cur_pos + 4] = '+';
      res[len[i] + (maxlen - len[i]) * 2 + 1][cur_pos + 3] = '-';
      cur_pos += 5;
      i++;
      continue;
    }
    if (s[i] == '[') {
      res[len[i] - 1][cur_pos] = '+';
      res[len[i] - 1][cur_pos + 1] = '-';
      for (int j = len[i]; j <= len[i] + (maxlen - len[i]) * 2; j++)
        res[j][cur_pos] = '|';
      res[len[i] + (maxlen - len[i]) * 2 + 1][cur_pos] = '+';
      res[len[i] + (maxlen - len[i]) * 2 + 1][cur_pos + 1] = '-';
      cur_pos++;
    }
    if (s[i] == ']') {
      res[len[i] - 1][cur_pos] = '+';
      res[len[i] - 1][cur_pos - 1] = '-';
      for (int j = len[i]; j <= len[i] + (maxlen - len[i]) * 2; j++)
        res[j][cur_pos] = '|';
      res[len[i] + (maxlen - len[i]) * 2 + 1][cur_pos] = '+';
      res[len[i] + (maxlen - len[i]) * 2 + 1][cur_pos - 1] = '-';
      cur_pos++;
    }
  }
  for (int i = 0; i < maxlen * 2 + 1; i++) {
    for (int j = 0; j < cur_pos; j++) printf("%c", res[i][j]);
    if (i != maxlen * 2) printf("\n");
  }
  return 0;
}
