// // Problem: Thread Tree (Rendering Part) // Solution by: MORI Shingo // // implement 4min // #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; static const long double EPS = 1e-9; static const long double PI = acos(-1.0); #define REP(i, n) for (int i = 0; i < (int)(n); i++) #define FOR(i, s, n) for (int i = (s); i < (int)(n); i++) #define FOREQ(i, s, n) for (int i = (s); i <= (int)(n); i++) #define FORIT(it, c) for (__typeof((c).begin())it = (c).begin(); it != (c).end(); it++) #define MEMSET(v, h) memset((v), h, sizeof(v)) int n; char strs[1010][1060]; int main() { while (scanf("%d", &n) > 0 && n) { MEMSET(strs, 0); REP(i, n) { int v = scanf("%s", strs[i]); assert(v == 1); } REP(i, n) { int depth = 0; while (strs[i][depth] == '.') { strs[i][depth] = ' '; depth++; } if (depth == 0) { continue; } strs[i][depth - 1] = '+'; for (int j = i - 1; strs[j][depth - 1] == ' '; j--) { strs[j][depth - 1] = '|'; } } REP(i, n) { printf("%s\n", strs[i]); } } }