#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <queue>
#include <cstdio>
#include <ctime>
#include <assert.h>
#include <chrono>
#include <random>
#include <numeric>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
using namespace std;
typedef long long int ll;
typedef unsigned long long ull;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll myRand(ll B) {
    return (ull)rng() % B;
}

int main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	int n;
	while(cin >> n,n){
		vector<string> s(n);
		for(int i=0;i<n;i++){
			cin >> s[i];
		}
		vector<int> v(n);
		for(int i=0;i<n;i++){
			int cnt=0;
			while(s[i][cnt]=='.')cnt++;
			v[i]=cnt;
			if(i)s[i][cnt-1]='+';
		}
		for(int i=1;i<n;i++){
			int u=i+1;
			while(u<n&&v[u]>v[i])u++;
			bool f=0;
			if(u<n&&v[u]==v[i])f=1;
			for(int j=i+1;j<u;j++){
				s[j][v[i]-1]=(f?'|':' ');
			}
		}
		for(int i=0;i<n;i++){
			cout << s[i] << "\n";
		}
	}
}

