#include #include using namespace std; #define DEB(x) cout << #x << " = " << x << endl; char p[101][101]; int m, n; inline bool check(int x, int y) { return x >= 0 && x < m && y >= 0 && y < m; } void draw0(int x, int y, int size) { if (check(x - 1, y)) p[y][x - 1] = '_'; if (check(x, y)) p[y][x] = (size == 0 ? 'o' : '|'); if (check(x + 1, y)) p[y][x + 1] = '_'; } void draw1(int x, int y) { if (check(x - 1, y)) p[y][x - 1] = '/'; if (check(x, y)) p[y][x] = '|'; if (check(x + 1, y)) p[y][x + 1] = '\\'; } void draw2(int x, int y) { if (check(x, y)) p[y][x] = '^'; } int main(void) { while (scanf("%d%d", &m, &n) == 2) { for (int i = 0; i < m; i++) { for (int j = 0; j < m; j++) { p[i][j] = '.'; } } int size, x, y; for (int i = 0; i < n; i++) { scanf("%d %d %d", &size, &x, &y); //DEB(size) DEB(x) DEB(y) draw0(x, m - y - 1, size); for (int j = 1; j <= size; j++) { draw1(x, m - y - 1 - j); } if (size > 0) { draw2(x, m - y - 1 - (size + 1)); } } for (int i = 0; i < m + 2; i++) putchar('*'); putchar('\n'); for (int i = 0; i < m; i++) { putchar('*'); for (int j = 0; j < m; j++) { putchar(p[i][j]); } putchar('*'); putchar('\n'); } for (int i = 0; i < m + 2; i++) putchar('*'); putchar('\n'); putchar('\n'); } return 0; }