#include <bits/stdc++.h>
using namespace std;
const long long maxll = 1e18;
const long long maxn = 1e5 + 1;
const long double eps = 0.0000001;
long long c, ans, x, y, z, k, n, m, g = 0, l = 0;
long long a[101], b[101], u[101];
char mat[1000][1000];
char ch;
stack<long long> s;
int main() {
  cin >> n;
  for (long long i = 0; i < n; i++) {
    cin >> ch;
    if (ch == ']') b[i] = 1;
  }
  for (long long i = 0; i < n; i++) {
    if (b[i] == 1) {
      x = s.top();
      s.pop();
      a[x] = y;
      a[i] = y;
      g = max(g, y);
      y--;
    } else {
      y++;
      s.push(i);
    }
  }
  for (long long i = 0; i < n; i++) a[i]--;
  long long i = 0;
  for (long long k = 0; k < g * 2 + 1; k++) {
    for (long long z = 0; z < 1000; z++) mat[k][z] = ' ';
  }
  z = -5;
  y = -6;
  for (long long it = 0; it < n; it++) {
    if (b[it] == 1 && z + 1 == it) {
      i += 2;
    }
    if (b[it] == 0) {
      mat[a[it]][i] = '+';
      mat[a[it]][i + 1] = '-';
      for (long long j = a[it] + 1; j < g * 2 - a[it]; j++) {
        mat[j][i] = '|';
      }
      mat[g * 2 - a[it]][i] = '+';
      mat[g * 2 - a[it]][i + 1] = '-';
    } else {
      if (y + 1 != it) i++;
      mat[a[it]][i] = '+';
      mat[a[it]][i - 1] = '-';
      for (long long j = a[it] + 1; j < g * 2 - a[it]; j++) {
        mat[j][i] = '|';
      }
      mat[g * 2 - a[it]][i] = '+';
      mat[g * 2 - a[it]][i - 1] = '-';
    }
    i++;
    if (b[it] == 0)
      z = it;
    else
      y = it;
  }
  for (long long k = 0; k < g * 2 + 1; k++) {
    for (long long z = 0; z < i; z++) cout << mat[k][z];
    if (k != g * 2) cout << '\n';
  }
  return 0;
}
