#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 1123456;
template <typename T>
T sqr(T x) {
  return x * x;
}
template <typename T>
void vout(T s) {
  cout << s << "\n";
  exit(0);
}
long long bp(long long a, long long n) {
  long long res = 1;
  while (n) {
    if (n % 2) res *= a;
    a *= a;
    n >>= 1;
  }
  return res;
}
char akel_sosat[1001][1001];
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  long long n;
  cin >> n;
  string a;
  cin >> a;
  long long kol = 0, mx = 0;
  for (int i = 0; i < n; i++) {
    if (a[i] == '[')
      kol++;
    else
      kol--;
    mx = max(mx, kol);
  }
  long long m = mx * 2 + 3;
  long long l = 1, len = mx;
  for (int i = 1; i <= 1000; i++)
    for (int j = 0; j < 1001; j++) akel_sosat[i][j] = ' ';
  long long st = 0;
  for (int i = 0; i < n; i++, st++) {
    if (a[i] == '[') {
      akel_sosat[l][st] = '+';
      akel_sosat[l][st + 1] = '-';
      long long l1 = len * 2 - 1;
      for (int j = l + 1; j <= l + l1; j++) akel_sosat[j][st] = '|';
      akel_sosat[l + l1 + 1][st] = '+';
      akel_sosat[l + l1 + 1][st + 1] = '-';
      len--;
      l++;
    } else {
      if (a[i] != a[i - 1]) st += 3;
      l--;
      len++;
      akel_sosat[l][st] = '+';
      akel_sosat[l][st - 1] = '-';
      long long l1 = len * 2 - 1;
      for (int j = l + 1; j <= l + l1; j++) akel_sosat[j][st] = '|';
      akel_sosat[l + l1 + 1][st] = '+';
      akel_sosat[l + l1 + 1][st - 1] = '-';
    }
  }
  for (int i = 1; i <= m; i++) {
    for (int j = 0; j < st; j++) cout << akel_sosat[i][j];
    cout << "\n";
  }
  cerr << "Time execute: " << clock() / (double)CLOCKS_PER_SEC << " sec"
       << "\n";
  return 0;
}
