import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.stream.Collectors; import java.util.stream.Stream; public class Forest { static char img[][]; static void add_tree(int s, int x, int y) { try { img[y][x] = '|'; } catch (Exception e){ } try { img[y][x-1] = '_'; } catch (Exception e){ } try { img[y][x+1] = '_'; } catch (Exception e){ } for (int i = 1; i <= s; i++) { try { img[y+i][x] = '|'; } catch (Exception e){ } try { img[y+i][x+1] = '\\'; } catch (Exception e){ } try { img[y+i][x-1] = '/'; } catch (Exception e){ } } try { img[y+s+1][x] = '^'; } catch (Exception e){ } } static void add_stump(int x, int y) { try { img[y][x] = 'o'; } catch (Exception e){ } try { img[y][x-1] = '_'; } catch (Exception e){ } try { img[y][x+1] = '_'; } catch (Exception e){ } } public static void main(String... args) throws Exception { //try (BufferedReader reader = new BufferedReader(new FileReader(new File("forest.in")))) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { String line; while ((line = reader.readLine()) != null) { String in[] = line.split(" "); int size = Integer.parseInt(in[0]); int count = Integer.parseInt(in[1]); img = new char[size][size]; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { img[i][j] = '.'; } } for (int i = 0; i < count; i++) { in = reader.readLine().split(" "); int s = Integer.parseInt(in[0]); int x = Integer.parseInt(in[1]); int y = Integer.parseInt(in[2]); if (s>0) { add_tree(s,x,y); } else { add_stump(x,y); } } for (int i = 0; i < size+2; i++) { System.out.print("*"); } System.out.println(); for (int i = size-1; i >= 0; i--) { char x[]=img[i]; System.out.print("*"); for (int j = 0; j < size; j++) { System.out.print(x[j]); } System.out.println("*"); } for (int i = 0; i < size+2; i++) { System.out.print("*"); } System.out.println(); System.out.println(); } } } }