func_code_string: #include <bits/stdc++.h>   using namespace std;   string input() {     int n;     string sequence;     cin >> n >> sequence;     return sequence;   }   int getMaxBalance(const string &sequence) {     int balance = 0;     int maxBalance = 0;     for (char bracket : sequence) {       balance += (bracket ==  [ ) - (bracket ==  ] );       if (balance > maxBalance) {         maxBalance = balance;       }     }     return maxBalance;   }   int getOpenClosePairs(const string &sequence) {     int result = 0;     for (int i = 1; i < (int)sequence.size(); ++i) {       result += sequence[i - 1] ==  [  && sequence[i] ==  ] ;     }     return result;   }   vector<string> solve(const string &sequence) {     const int maxBalace = getMaxBalance(sequence);     const int length = (int)sequence.size() + 3 * getOpenClosePairs(sequence);     vector<string> result(2 * maxBalace + 1, string(length,    ));     int previousHeight = 2 * maxBalace + 1;     char previousBracket =  ] ;     int col = 0;     for (char bracket : sequence) {       int height;       if ( [  == previousBracket &&  [  == bracket) {         height = previousHeight - 2;       } else if ( [  == previousBracket &&  ]  == bracket ||                   ]  == previousBracket &&  [  == bracket) {         col += 3 * ( [  == previousBracket &&  ]  == bracket);         height = previousHeight;       } else if ( ]  == previousBracket &&  ]  == bracket) {         height = previousHeight + 2;       } else {         assert(false);       }       int middle = (int)result.size() / 2;       int topRow = middle - height / 2;       int bottomRow = middle + height / 2;       int minusCol = col + ( [  == bracket) - ( ]  == bracket);       result[topRow][col] = result[bottomRow][col] =  + ;       result[topRow][minusCol] = result[bottomRow][minusCol] =  - ;       for (int row = topRow + 1; row < bottomRow; ++row) {         result[row][col] =  | ;       }       ++col;       previousHeight = height;       previousBracket = bracket;     }     return result;   }   void output(const vector<string> &picture) {     for (const string &row : picture) {       cout << row << endl;     }   }   int main() {     const string sequece = input();     auto picture = solve(sequece);     output(picture);     return 0;   }   