#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, order(1), maxOrder(0);
  string str;
  cin >> n >> str;
  for (int i = 0; i < str.length(); i++) {
    if (str[i] == '[') {
      order++;
    } else {
      order--;
    }
    if (order > maxOrder) maxOrder = order;
  }
  maxOrder--;
  char picture[2500][maxOrder * 2 + 1];
  for (int i = 0; i < maxOrder * 2 + 1; i++) {
    for (int j = 0; j < 2500; j++) picture[j][i] = ' ';
  }
  int index = 0;
  int sm = -1;
  int u = 0;
  bool isLastOpened = true;
  while (u != str.length()) {
    if (str[u] == '[') {
      if (isLastOpened == false) {
        sm -= 1;
        isLastOpened = true;
      }
      sm += 1;
      picture[index][sm] = '+';
      picture[index + 1][sm] = '-';
      picture[index][maxOrder * 2 - sm] = '+';
      picture[index + 1][maxOrder * 2 - sm] = '-';
      for (int i = sm + 1; i < maxOrder * 2 - sm; i++) {
        picture[index][i] = '|';
      }
      u++;
      index++;
    } else {
      if (isLastOpened) {
        sm += 1;
        index += 3;
        isLastOpened = false;
      }
      sm -= 1;
      picture[index][sm] = '+';
      picture[index - 1][sm] = '-';
      picture[index][maxOrder * 2 - sm] = '+';
      picture[index - 1][maxOrder * 2 - sm] = '-';
      for (int i = sm + 1; i < maxOrder * 2 - sm; i++) {
        picture[index][i] = '|';
      }
      u++;
      index++;
    }
  }
  for (int i = 0; i < maxOrder * 2 + 1; i++) {
    for (int j = 0; j < index; j++) cout << picture[j][i];
    cout << endl;
  }
}
