#include <bits/stdc++.h>
using namespace std;
int main() {
  int say = 0;
  int mirta;
  string a;
  cin >> mirta >> a;
  int uzunluqs[a.length()];
  int maxx = 0;
  for (int i = 0; i < a.length(); i++) {
    if (a[i] == '[') {
      uzunluqs[i] = say;
      if (uzunluqs[i] > maxx) maxx = uzunluqs[i];
      ++say;
    } else {
      --say;
      uzunluqs[i] = say;
    }
  }
  maxx = 2 * (maxx + 1);
  char arr[maxx + 1][600];
  for (int i = 0; i < maxx + 1; i++) {
    for (int j = 0; j < 600; j++) {
      arr[i][j] = ' ';
    }
  }
  for (int i = 0; i < a.length(); i++) {
    uzunluqs[i] = (maxx - uzunluqs[i] * 2);
  }
  int index = 0;
  for (int i = 0; i < a.length(); i++) {
    if (a[i] == ']' && uzunluqs[i] == uzunluqs[i - 1]) {
      index += 3;
    }
    int ara = maxx - uzunluqs[i];
    ara /= 2;
    for (int j = ara; j <= maxx - ara; j++) {
      if (a[i] == ']') {
        if (j == ara || j == maxx - ara) {
          arr[j][index - 1] = '-';
          arr[j][index] = '+';
        } else {
          arr[j][index] = '|';
        }
      } else {
        if (j == ara || j == maxx - ara) {
          arr[j][index + 1] = '-';
          arr[j][index] = '+';
        } else {
          arr[j][index] = '|';
        }
      }
    }
    ++index;
  }
  for (int i = 0; i < maxx + 1; i++) {
    for (int j = 0; j < index; j++) {
      cout << arr[i][j];
    }
    cout << endl;
  }
}
