#include <bits/stdc++.h>
using namespace std;
struct element {
  char c;
  int h = 3;
};
int n, m;
element a[200];
int main() {
  cin >> n >> a[0].c;
  for (int i = 1; i < n; ++i) {
    cin >> a[i].c;
    if (a[i - 1].c == '[') {
      if (a[i].c == '[') {
        if (a[i - 1].h == 3)
          for (int j = i - 1; j >= 0; --j) a[j].h += 2;
        else
          a[i].h = a[i - 1].h - 2;
      }
      if (a[i].c == ']') {
        a[i].h = a[i - 1].h;
      }
    }
    if (a[i - 1].c == ']') {
      if (a[i].c == '[') {
        a[i].h = a[i - 1].h;
      }
      if (a[i].c == ']') {
        a[i].h = a[i - 1].h + 2;
      }
    }
    m = max(m, a[i].h);
  }
  for (int i = m; i >= 3; i -= 2) {
    for (int j = 0; j < n; ++j) {
      if (i < a[j].h) {
        cout << "|";
        if (a[j].c == '[' && a[j + 1].c == ']') cout << "   ";
      } else if (i == a[j].h) {
        if (a[j].c == '[') {
          cout << "+-";
          if (a[j + 1].c == ']') cout << " ";
        } else {
          cout << "-+";
        }
      } else {
        if (a[j].c == '[') {
          if (a[j - 1].c == '[') {
            if (a[j + 1].c == '[') {
              cout << " ";
            }
            if (a[j + 1].c == ']') {
              cout << "  ";
            }
          }
          if (a[j - 1].c == ']') {
            if (a[j + 1].c == '[') {
              cout << "  ";
            }
            if (a[j + 1].c == ']') {
              cout << "   ";
            }
          }
        }
        if (a[j].c == ']') {
          if (a[j - 1].c == '[') {
            if (a[j + 1].c == '[') {
              cout << "  ";
            }
            if (a[j + 1].c == ']') {
              cout << " ";
            }
          }
          if (a[j - 1].c == ']') {
            if (a[j + 1].c == '[') {
              cout << "  ";
            }
            if (a[j + 1].c == ']') {
              cout << " ";
            }
          }
        }
      }
    }
    cout << endl;
  }
  for (int i = 0; i < n; ++i) {
    cout << "|";
    if (a[i].c == '[' && a[i + 1].c == ']') cout << "   ";
  }
  cout << endl;
  for (int i = 3; i <= m; i += 2) {
    for (int j = 0; j < n; ++j) {
      if (i < a[j].h) {
        cout << "|";
        if (a[j].c == '[' && a[j + 1].c == ']') cout << "   ";
      } else if (i == a[j].h) {
        if (a[j].c == '[') {
          cout << "+-";
          if (a[j + 1].c == ']') cout << " ";
        } else {
          cout << "-+";
        }
      } else {
        if (a[j].c == '[') {
          if (a[j - 1].c == '[') {
            if (a[j + 1].c == '[') {
              cout << " ";
            }
            if (a[j + 1].c == ']') {
              cout << "  ";
            }
          }
          if (a[j - 1].c == ']') {
            if (a[j + 1].c == '[') {
              cout << "  ";
            }
            if (a[j + 1].c == ']') {
              cout << "   ";
            }
          }
        }
        if (a[j].c == ']') {
          if (a[j - 1].c == '[') {
            if (a[j + 1].c == '[') {
              cout << "  ";
            }
            if (a[j + 1].c == ']') {
              cout << " ";
            }
          }
          if (a[j - 1].c == ']') {
            if (a[j + 1].c == '[') {
              cout << "  ";
            }
            if (a[j + 1].c == ']') {
              cout << " ";
            }
          }
        }
      }
    }
    cout << endl;
  }
  return 0;
}
