#include<stdio.h>
#include<string.h>
#include<algorithm>

//int main() {
//    int n, h, mins, imins, all;
//    char s[100][6];
//
//    scanf("%d", &n);
//    for(int i = 0; i < n; ++i) {
//        scanf("%s", s[i]);
//    }
//    for(int i = 0; i < n; ++i) {
//        s[i][2] = s[i][3];
//        s[i][3] = s[i][4];
//        for(int j = 0; j < 4; ++j)
//            s[i][j] -= '0';
//        h = s[i][0] * 10 + s[i][1];
//        mins = s[i][2] * 10 + s[i][3];
//        imins = s[i][3] * 10 + s[i][2];
//        all = h * 100 + mins;
//        if(h < 0 || h > 23 || mins < 0 || mins > 59){
//            printf("NO\n");
//            continue;
//        }
//        if(mins == 0) {
//            printf("YES\n");
//            continue;
//        }
//        if(h == mins) {
//            printf("YES\n");
//            continue;
//        }
//        if(h == imins) {
//            printf("YES\n");
//            continue;
//        }
//        if(s[i][0] + 1 == s[i][1] && s[i][1] + 1 == s[i][2] && s[i][2] + 1 == s[i][3]) {
//            printf("YES\n");
//            continue;
//        }
//        while(all % 2 == 0) all = all / 2;
//        if(s[i][0] != 0 && all == 1) {
//            printf("YES\n");
//            continue;
//        }
//        printf("NO\n");
//    }
//
//    return 0;
//}

//typedef struct {
//    char nume[20];
//    int puncte;
//    int goals;
//}ECHIPA;
//
//ECHIPA e[4];
//
//char e1[20], e2[20];
//int g1, g2, ne = -1;
//
//int match(char *nume) {
//    for(int i = 0; i <= ne; ++i) {
//        if(strcmp(e[i].nume, nume) == 0)
//            return i;
//    }
//    return -1;
//}
//
//void addScore(char *nume, int puncte, int goals) {
//    int index = match(nume);
//    if(index == -1) {
//        ++ne;
//        strcpy(e[ne].nume, nume);
//        e[ne].puncte = 0;
//        e[ne].goals = 0;
//        index = ne;
//    }
//    e[index].puncte += puncte;
//    e[index].goals += goals;
//}
//
//bool greatert(ECHIPA a, ECHIPA b) {
//    if(a.puncte !=  b.puncte) {
//        return a.puncte < b.puncte;
//    }
//    if(a.goals != b.goals) {
//        return a.goals < b.goals;
//    }
//    return (strcmp(a.nume, b.nume) > 0);
//}
//
//int main() {
//    //FILE *f = fopen("echipe.in", "r");
//    for(int i = 0; i < 6; ++i) {
//    scanf("%s%s%d%d", e1, e2, &g1, &g2);
//        if(g1 > g2) {
//            addScore(e1, 3, g1);
//            addScore(e2, 0, g2);
//            continue;
//        }
//        if(g2 > g1) {
//            addScore(e1, 0, g1);
//            addScore(e2, 3, g2);
//            continue;
//        }
//        addScore(e1, 1, g1);
//        addScore(e2, 1, g2);
//    }
//    std::sort(e, e+4, greatert);
//    for(int i = 3; i > -1; --i) {
//        printf("%s\n", e[i].nume);
//    }
//    return 0;
//}

char p[11][2000], note[3];
int f = 10;
int n;

void addEnd() {
    strcat(p[0], "---+");
    strcat(p[1], "---|");
    strcat(p[2], "---|");
    strcat(p[3], "---|");
    strcat(p[4], "---|");
    strcat(p[5], "---|");
    strcat(p[6], "---|");
    strcat(p[7], "---|");
    strcat(p[8], "---+");
    strcat(p[9], "    ");
   strcat(p[10], "    ");
}

void addC() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "     ");
    strcat(p[4], "-----");
    strcat(p[5], "     ");
    strcat(p[6], "-----");
    strcat(p[7], "    |");
    strcat(p[8], "----|");
    strcat(p[9], "    |");
   strcat(p[10], "  (@)");
}

void addCD() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "     ");
    strcat(p[4], "-----");
    strcat(p[5], "     ");
    strcat(p[6], "-----");
    strcat(p[7], "    |");
    strcat(p[8], "----|");
    strcat(p[9], "    |");
   strcat(p[10], " #(@)");
}

void addD() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "     ");
    strcat(p[4], "-----");
    strcat(p[5], "     ");
    strcat(p[6], "----|");
    strcat(p[7], "    |");
    strcat(p[8], "----|");
    strcat(p[9], "  (@)");
   strcat(p[10], "     ");
}

void addDD() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "     ");
    strcat(p[4], "-----");
    strcat(p[5], "     ");
    strcat(p[6], "----|");
    strcat(p[7], "    |");
    strcat(p[8], "----|");
    strcat(p[9], " #(@)");
   strcat(p[10], "     ");
}

void addE() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "     ");
    strcat(p[4], "-----");
    strcat(p[5], "    |");
    strcat(p[6], "----|");
    strcat(p[7], "    |");
    strcat(p[8], "--(@)");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addF() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "     ");
    strcat(p[4], "----|");
    strcat(p[5], "    |");
    strcat(p[6], "----|");
    strcat(p[7], "  (@)");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addFD() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "     ");
    strcat(p[4], "----|");
    strcat(p[5], "    |");
    strcat(p[6], "----|");
    strcat(p[7], " #(@)");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addG() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "    |");
    strcat(p[4], "----|");
    strcat(p[5], "    |");
    strcat(p[6], "--(@)");
    strcat(p[7], "     ");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addGD() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "    |");
    strcat(p[4], "----|");
    strcat(p[5], "    |");
    strcat(p[6], "-#(@)");
    strcat(p[7], "     ");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addA() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "----|");
    strcat(p[3], "    |");
    strcat(p[4], "----|");
    strcat(p[5], "  (@)");
    strcat(p[6], "-----");
    strcat(p[7], "     ");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addAD() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "----|");
    strcat(p[3], "    |");
    strcat(p[4], "----|");
    strcat(p[5], " #(@)");
    strcat(p[6], "-----");
    strcat(p[7], "     ");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addB() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "     ");
    strcat(p[4], "--(@)");
    strcat(p[5], "  |  ");
    strcat(p[6], "--|--");
    strcat(p[7], "  |  ");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addC2() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], "  (@)");
    strcat(p[4], "--|--");
    strcat(p[5], "  |  ");
    strcat(p[6], "--|--");
    strcat(p[7], "     ");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

void addC2D() {
    strcat(p[0], "-----");
    strcat(p[1], "     ");
    strcat(p[2], "-----");
    strcat(p[3], " #(@)");
    strcat(p[4], "--|--");
    strcat(p[5], "  |  ");
    strcat(p[6], "--|--");
    strcat(p[7], "     ");
    strcat(p[8], "-----");
    strcat(p[9], "     ");
   strcat(p[10], "     ");
}

int main() {
    strcpy(p[0], "----|-\\----");
    strcpy(p[1], "    |  }   ");
    strcpy(p[2], "----|-/----");
    strcpy(p[3], "    |/   4 ");
    strcpy(p[4], "---/|------");
    strcpy(p[5], "  / |    4 ");
    strcpy(p[6], "-{--|-\\----");
    strcpy(p[7], "  \\_|_/    ");
    strcpy(p[8], "----|\\-----");
    strcpy(p[9], "    |_}    ");
    strcpy(p[10], "           ");
    scanf("%d", &n);
    for(int i = 0; i < n; ++i) {
        scanf("%s", note);
        switch(note[0]) {
        case 'A':
            if(note[1] == '#') addAD();
            else addA();
            break;
              case 'B':
                  addB();
            break;
              case 'C':
                if(note[1] == '#') addCD();
                else
                    if(note[1] == '2' && note[2] == '#') addC2D();
                        else
                        if(note[1] == '2') addC2();
                        else addC();
            break;
              case 'D':
            if(note[1] == '#') addDD();
            else addD();
            break;
              case 'E':
                  addE();
            break;
              case 'F':
            if(note[1] == '#') addFD();
            else addF();
            break;
              case 'G':
            if(note[1] == '#') addGD();
            else addG();
            break;
        }
    }
    addEnd();
    //FILE *g = fopen("note.out", "w");
    for(int i = 0; i < 11; ++i)
        printf("%s\n", p[i]);
    return 0;
}