#include using namespace std; char data[110][110]; int m, n; void writeIfIn(int x, int y, char ch) { if ( x <= m && x >= 1 && y <= m && y >= 1 ) data[y][x] = ch; } void printTree(int s, int x, int y) { int treeHeight = s; if (y < 1) { treeHeight += y+1; int y0 = 1; for (;y0 < treeHeight; y0++) { writeIfIn(x-1,y0, '/'); writeIfIn(x ,y0, '|'); writeIfIn(x+1,y0, '\\'); if (y0 == m) return; } writeIfIn(x, y0, '^'); } else { if (s == 0) { writeIfIn(x-1,y, '_'); writeIfIn(x ,y, 'o'); writeIfIn(x+1,y, '_'); return; } // parez writeIfIn(x-1,y, '_'); writeIfIn(x ,y, '|'); writeIfIn(x+1,y, '_'); int y0 = y+1; for (;y0 <= treeHeight+y; y0++) { writeIfIn(x-1,y0, '/'); writeIfIn(x ,y0, '|'); writeIfIn(x+1,y0, '\\'); if (y0 == m) return; } writeIfIn(x, y0, '^'); } } int main(void) { ios::sync_with_stdio(0); int s, x, y; while (cin >> m >> n) { memset(data, '.', sizeof(data)); for (int i = 0; i < n; i ++) { cin >> s >> x >> y; printTree(s, x+1, y+1); } for (int i = 0; i <= m+1; i++) { data[i][0] = data[i][m+1] = '*'; data[i][m+2] = 0; data[0][i] = data[m+1][i] = '*'; } for (int i = m+1; i >= 0; i--) cout << data[i] << endl; cout << endl; } }