#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
const int INF = 1e9 + 7;
char c[215][515];
int main() {
  ios_base::sync_with_stdio(0);
  int n;
  cin >> n;
  string st;
  cin >> st;
  for (int i = 1; i <= 205; i++)
    for (int j = 1; j <= 505; j++) c[i][j] = ' ';
  int k = 0, ans = 0;
  for (int i = 0; i < st.size(); i++) {
    if (st[i] == '[')
      k++;
    else
      k--;
    ans = max(ans, k);
  }
  int x = 1, y = 0, f = 0;
  bool skob = 1;
  k = 0;
  for (int i = 0; i < st.size(); i++) {
    if (st[i] == '[') {
      k++;
      if (skob)
        y++;
      else {
        x++;
        y++;
      }
      c[x][y] = '+';
      c[x][y + 1] = '-';
      for (int kx = 1; kx <= (ans - k) * 2 + 1; kx++) c[x + kx][y] = '|';
      int lowX = x + (ans - k) * 2 + 2;
      c[lowX][y] = '+';
      c[lowX][y + 1] = '-';
      skob = 0;
    } else {
      if (skob) {
        x--;
        y++;
      } else {
        y += 4;
      }
      c[x][y] = '+';
      c[x][y - 1] = '-';
      for (int kx = 1; kx <= (ans - k) * 2 + 1; kx++) c[x + kx][y] = '|';
      int lowX = x + (ans - k) * 2 + 2;
      c[lowX][y] = '+';
      c[lowX][y - 1] = '-';
      skob = 1;
      k--;
      if (i == st.size() - 1) f = y;
    }
  }
  for (int i = 1; i <= ans * 2 + 1; i++) {
    for (int j = 1; j <= y; j++) cout << c[i][j];
    if (i < ans * 2 + 1) cout << "\n";
  }
}
