#include #include #include using namespace std; typedef vector VB; int n; int board[12][12]; // 2 | | 3 // | | // -- -- // -- -- // | | // 4 | | 5 int main(void) { for (int casei = 1; ; ++casei) { cin >> n; if (n == 0) break; for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) cin >> board[i][j]; VB above(n, false); VB below(n, false); for (int i = 0; i < n; ++i) { bool left = true; for (int j = 0; j < n; ++j) { if (board[i][j] == 0) { if (left) { board[i][j] = above[j] ? 2 : 4; } else { board[i][j] = above[j] ? 3 : 5; } below[j] = above[j]; } else if (board[i][j] == 1) { below[j] = true; left = false; } else if (board[i][j] == -1) { below[j] = false; left = true; } } above = below; } if (casei != 1) printf("\n"); printf("Case %d:\n\n", casei); for (int j = 0; j < n; ++j) printf("****"); printf("***\n"); for (int i = 0; i < n; ++i) { if (i > 0) { printf("* "); for (int j = 0; j < n; ++j) { printf(" "); if (board[i][j] == -1 || board[i][j] == 2 || board[i][j] == 3) printf("|"); else printf(" "); printf(" "); } printf("*\n"); } printf("*"); for (int j = 0; j < n; ++j) { printf("H"); if (board[i][j] == 1 || board[i][j] == 2 || board[i][j] == 4) printf("-"); else printf(" "); /* switch (board[i][j]) { case -1: putc('|', stdout); break; case 0: putc('?', stdout); break; case 1: putc('-', stdout); break; default: printf("%d", board[i][j]); }*/ printf("O"); if (board[i][j] == 1 || board[i][j] == 3 || board[i][j] == 5) printf("-"); else printf(" "); } printf("H*\n"); if (i + 1 < n) { printf("* "); for (int j = 0; j < n; ++j) { printf(" "); if (board[i][j] == -1 || board[i][j] == 4 || board[i][j] == 5) printf("|"); else printf(" "); printf(" "); } printf("*\n* "); for (int j = 0; j < n; ++j) { printf(" H "); } printf("*\n"); } } for (int j = 0; j < n; ++j) printf("****"); printf("***\n"); } return 0; }