#include <bits/stdc++.h>
int main(int argc, const char *argv[]) {
  std::uint64_t count;
  std::cin >> count;
  std::string string;
  std::cin >> string;
  std::uint64_t count_in = 0;
  std::uint64_t max_count_in = 0;
  for (const auto &elem : string) {
    if (elem == '[') {
      count_in++;
    } else if (elem == ']') {
      if (max_count_in < count_in) {
        max_count_in = count_in;
      }
      count_in--;
    }
  }
  std::uint64_t height = max_count_in + max_count_in - 1 + 2;
  std::vector<uint64_t> vector;
  for (const auto &elem : string) {
    if (elem == '[') {
      height -= 2;
      vector.push_back(height);
    } else if (elem == ']') {
      vector.push_back(height);
      height += 2;
    }
  }
  std::uint64_t width = count;
  for (std::uint64_t i = 0; i < vector.size() - 1; i++) {
    if (vector[i] == vector[i + 1]) {
      width += 3;
    }
  }
  for (std::uint64_t i = 0; i < (max_count_in + max_count_in - 1 + 2) / 2;
       i++) {
    std::uint64_t ves = vector[0] - 2 * i;
    for (std::uint64_t j = 0; j < count; j++) {
      if (ves == vector[j]) {
        if (string[j] == '[') {
          std::cout << "+-";
          std::cout << " ";
        } else {
          std::cout << "-+";
        }
      } else if (ves > vector[j]) {
        if (vector[j] < vector[j - 1]) {
          std::cout << " ";
        } else if (vector[j] == vector[j - 1]) {
          if (string[j] == ']') {
            std::cout << " ";
          } else {
            std::cout << "    ";
          }
        } else {
          std::cout << " ";
        }
      } else if (ves < vector[j]) {
        if ((string[j] == '[') && (string[j + 1] == ']')) {
          std::cout << "|   ";
        } else {
          std::cout << "|";
        }
      }
    }
    std::cout << std::endl;
  }
  for (std::uint64_t j = 0; j < count; j++) {
    if ((string[j] == '[') && (string[j + 1] == ']')) {
      std::cout << "|   |";
    } else if ((string[j] == '[') && (string[j + 1] == '[')) {
      std::cout << "|";
    } else if ((string[j] == ']') && (string[j - 1] == ']')) {
      std::cout << "|";
    }
  }
  std::cout << std::endl;
  for (std::int64_t i = (max_count_in + max_count_in - 1 + 2) / 2 - 1; i >= 0;
       i--) {
    std::uint64_t ves = vector[0] - 2 * i;
    for (std::uint64_t j = 0; j < count; j++) {
      if (ves == vector[j]) {
        if (string[j] == '[') {
          std::cout << "+-";
          std::cout << " ";
        } else {
          std::cout << "-+";
        }
      } else if (ves > vector[j]) {
        if (vector[j] < vector[j - 1]) {
          std::cout << " ";
        } else if (vector[j] == vector[j - 1]) {
          if (string[j] == ']') {
            std::cout << " ";
          } else {
            std::cout << "    ";
          }
        } else {
          std::cout << " ";
        }
      } else if (ves < vector[j]) {
        if ((string[j] == '[') && (string[j + 1] == ']')) {
          std::cout << "|   ";
        } else {
          std::cout << "|";
        }
      }
    }
    std::cout << std::endl;
  }
  return 0;
}
