#include #include #include using namespace std; static void put(std::vector& img, int M, int X, int Y, const char* str) { if (Y < 0 || Y >= M) return; int len = strlen(str); int ofs = 0; if (X < 0) { ofs = -X; X = 0; } if (ofs >= len) return; if (X + len - ofs >= M) len = M - X + ofs; if (len <= 0) return; memcpy(&img[(M+2)*(Y+1)+X+1], str + ofs, len - ofs); } int main() { for (;!feof(stdin);) { int M,N; if (scanf("%d %d", &M, &N) != 2) break; int M_ = M+2; std::vector img; img.resize(M_*M_); memset(&img[0], 'x', M_*M_); memset(&img[0], '*', M_); memset(&img[M_], '.', (M_-2)*M_); memset(&img[(M_-1)*M_], '*', M_); for (int y = 1; y < M_-1; y++) { img[y*M_] = img[y*M_ + M_-1] = '*'; } for (int i = 0; i < N; i++) { int S, X, Y; scanf("%d %d %d", &S, &X, &Y); Y = M - Y - 1; if (S == 0) { // _o_ put(img, M, X - 1, Y, "_o_"); } else { put(img, M, X - 1, Y, "_|_"); put(img, M, X, Y - S - 1, "^"); int Ymin = Y - S; if (Y - S < 0) S = Y; for (int y = Y - S; y < Y; y++) put(img, M, X-1, y, "/|\\"); } } int i=0; for (int y = 0; y < M_; y++) { for (int x = 0; x < M_; x++) putchar(img[i++]); putchar('\n'); } putchar('\n'); } return 0; }