#include #include using namespace std; int M, N; bool in(int x, int y) { return x >= 0 && x < M && y >= 0 && y < M; } void strom(vector >& map, int x, int y, int s) { if (in(x-1, y)) { map[x-1][y] = '_'; } if (in(x,y)) { map[x][y] = '|'; } if (in(x+1,y)) { map[x+1][y] = '_'; } y++; for (int i = 0; i < s; i++) { if (in(x-1, y)) { map[x-1][y] = '/'; } if (in(x,y)) { map[x][y] = '|'; } if (in(x+1,y)) { map[x+1][y] = '\\'; } y++; } if (in(x,y)) { map[x][y] = '^'; } } void pen(vector > &map, int x, int y) { if (y < 0 || y >= M) { return; } if (x + 1 < 0 || x -1 >= M) { return; } if (in(x-1, y)) { map[x-1][y] = '_'; } if (in(x,y)) { map[x][y] = 'o'; } if (in(x+1,y)) { map[x+1][y] = '_'; } } int main(void) { while (scanf("%d %d", &M, &N) == 2) { vector > map(M, vector(M,'.')); int size, x, y; for (int r = 0; r < N; r++) { scanf("%d %d %d", &size, &x, &y); if (size == 0) { pen(map, x, y); } else { strom(map, x, y, size); } } for (int i = 0; i < M+2; i++) printf("*"); printf("\n"); for (int i = M-1; i >=0 ; i--) { printf("*"); for (int j = 0; j < M; j++) { printf("%c", map[j][i]); } printf("*\n"); } for (int i = 0; i < M+2; i++) printf("*"); printf("\n\n"); } return 0; }