#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;   }