#include #include #include using namespace std; typedef long long ll; char map[210][210]; int m,n; int valid(int x, int y){ if(x >= 0 && x < m+2 && y >= 0 && y < m+2) return true; return false; } int main(void){ while(scanf("%d %d", &m, &n) == 2){ int s,x,y; for(int x = 0; x < m+2; x++) for(int y = 0; y < m+2; y++) map[x][y]='.'; for(int i = 0; i < n; i++){ // printf("arst\n"); scanf("%d %d %d", &s, &x, &y); // printf("nacetl jsem %d %d %d\n", x,s,y); // printf("nacteni ok\n"); x++; y++; // printf("neumim pricist\n"); if(s==0){ // printf("kreslim kmenarst\n"); if(valid(x,y)){ map[x][y] = 'o'; // printf("o je na %d %d\n", x,y); if(valid(x-1,y)) map[x-1][y] = '_'; if(valid(x+1,y)) map[x+1][y] = '_'; } } else{ // printf("kreslim kmen\n"); if(valid(x,y)){ // printf("kmen\n"); // printf("_ je na %d %d\n", x,y); map[x][y] = '|'; if(valid(x-1,y)) map[x-1][y] = '_'; if(valid(x+1,y)) map[x+1][y] = '_'; } // printf("kreslim kmen KONEC\n"); int yhat = y+s+1; // printf("kreslim hlavu\n"); if(valid(x,yhat)){ // printf("^ je na %d %d\n", x,yhat); map[x][yhat] = '^'; } // printf("kreslim hlavu KONEC\n"); int ys = max(0,y+1); for(int yy = ys; yy < yhat; yy++){ if(valid(x,yy)){ map[x][yy] = '|'; if(valid(x-1,yy)) map[x-1][yy] = '/'; if(valid(x+1,yy)) map[x+1][yy] = '\\'; } } } } for(int x = 0; x < m+2; x++){ map[x][0] = '*'; map[0][x] = '*'; map[x][m+1] = '*'; map[m+1][x] = '*'; } for(int y = m+1; y >= 0; y--){ for(int x = 0; x < m+2; x++){ printf("%c", map[x][y]); } printf("\n"); } printf("\n"); } return 0; }