#include <bits/stdc++.h>

using namespace std;

int N;
string S;
char A[50][100000];

int findPos(string S) {
	int pos = -1;
	if (S.find('2') != string::npos) {
		return 7;
	}
	if (S[0] >= 'C') {
		return S[0] - 'C';
	}
	return S[0] - 'A' + 5;
}

char aux[11][11] = {
	"----|-\\---",
	"    |  }  ",
	"----|-/---",
	"    |/   4",
	"---/|-----",
	"  / |    4",
	"-{--|-\\---",
	"  \\_|_/   ",
	"----|\\----",
	"    |_}   "
};

int main() {
//	freopen("date.in", "r", stdin);
//	freopen("date.out","w", stdout);
	cin.sync_with_stdio(false);
	
	cin >> N;
	
	int LIM = (N + 3) * 5;
	int LINES = 11;
	
	for (int i = 0; i < LINES - 2; i += 2) {
		for (int j = 0; j < LIM; j++) {
			A[i][j] = '-';
		}
	}
	for (int i = 1; i < LINES; i += 2) {
		for (int j = 0; j < LIM; j++) {
			A[i][j] = ' ';
		}
	}
	for (int j = 0; j < LIM; j++) {
		A[LINES - 1][j] = ' ';
	}
	
	for (int i = 0; i < LINES - 1; i++) {
		for (int j = 0; j < 10; j++) {
			A[i][j] = aux[i][j];
		}
	}
	A[0][LIM - 1] = '+';
	A[LINES - 3][LIM - 1] = '+';
	
	int cnt = 0;
	while (N--) {
		cin >> S;
		int M = (int) S.size();
		int pos = findPos(S);
		bool sh = (S.find('#') != string::npos);
		cnt++;
		int j = (cnt + 2) * 5;
		int i = LINES - 1 - pos;
		
		A[i][j] = ')';
		A[i][j - 1] = '@';
		A[i][j - 2] = '(';
		if (sh) {
			A[i][j - 3] = '#';
		}
		cerr << i << endl;
		if (pos >= 6) { // in jos
			A[i + 1][j - 2] = '|';
			A[i + 2][j - 2] = '|';
			A[i + 3][j - 2] = '|';
		}
		else {
			A[i - 1][j] = '|';
			A[i - 2][j] = '|';
			A[i - 3][j] = '|';
		}
	}
	
	for (int i = 0; i < LINES; i++) {
		printf("%s\n", A[i]);
	}
	
	return 0;
}