#include <bits/stdc++.h>
using namespace std;
string input() {
  int n;
  string sequence;
  cin >> n >> sequence;
  return sequence;
}
int getMaxBalance(const string &sequence) {
  int balance = 0;
  int maxBalance = 0;
  for (char bracket : sequence) {
    balance += (bracket == '[') - (bracket == ']');
    if (balance > maxBalance) {
      maxBalance = balance;
    }
  }
  return maxBalance;
}
int getOpenClosePairs(const string &sequence) {
  int result = 0;
  for (int i = 1; i < (int)sequence.size(); ++i) {
    result += sequence[i - 1] == '[' && sequence[i] == ']';
  }
  return result;
}
vector<string> solve(const string &sequence) {
  const int maxBalace = getMaxBalance(sequence);
  const int length = (int)sequence.size() + 3 * getOpenClosePairs(sequence);
  vector<string> result(2 * maxBalace + 1, string(length, ' '));
  int previousHeight = 2 * maxBalace + 1;
  char previousBracket = ']';
  int col = 0;
  for (char bracket : sequence) {
    int height;
    if ('[' == previousBracket && '[' == bracket) {
      height = previousHeight - 2;
    } else if ('[' == previousBracket && ']' == bracket ||
               ']' == previousBracket && '[' == bracket) {
      col += 3 * ('[' == previousBracket && ']' == bracket);
      height = previousHeight;
    } else if (']' == previousBracket && ']' == bracket) {
      height = previousHeight + 2;
    } else {
      assert(false);
    }
    int middle = (int)result.size() / 2;
    int topRow = middle - height / 2;
    int bottomRow = middle + height / 2;
    int minusCol = col + ('[' == bracket) - (']' == bracket);
    result[topRow][col] = result[bottomRow][col] = '+';
    result[topRow][minusCol] = result[bottomRow][minusCol] = '-';
    for (int row = topRow + 1; row < bottomRow; ++row) {
      result[row][col] = '|';
    }
    ++col;
    previousHeight = height;
    previousBracket = bracket;
  }
  return result;
}
void output(const vector<string> &picture) {
  for (const string &row : picture) {
    cout << row << endl;
  }
}
int main() {
  const string sequece = input();
  auto picture = solve(sequece);
  output(picture);
  return 0;
}
