| n | box = {('V', 'LIGHT'): '│', ('V', 'HEAVY'): '┃', ('H', 'LIGHT'): '─', (' | n | BOX = {('V', 'LIGHT'): '│', ('V', 'HEAVY'): '┃', ('H', 'LIGHT'): '─', (' |
| H', 'HEAVY'): '━', ('CORNER', 'TL', 'LIGHT', 'LIGHT'): '┌', ('CORNER', ' | | H', 'HEAVY'): '━', ('CORNER', 'TL', 'LIGHT', 'LIGHT'): '┌', ('CORNER', ' |
| TR', 'LIGHT', 'LIGHT'): '┐', ('CORNER', 'BL', 'LIGHT', 'LIGHT'): '└', (' | | TR', 'LIGHT', 'LIGHT'): '┐', ('CORNER', 'BL', 'LIGHT', 'LIGHT'): '└', (' |
| CORNER', 'BR', 'LIGHT', 'LIGHT'): '┘', ('CORNER', 'TL', 'HEAVY', 'HEAVY' | | CORNER', 'BR', 'LIGHT', 'LIGHT'): '┘', ('CORNER', 'TL', 'HEAVY', 'HEAVY' |
| ): '┏', ('CORNER', 'TR', 'HEAVY', 'HEAVY'): '┓', ('CORNER', 'BL', 'HEAVY | | ): '┏', ('CORNER', 'TR', 'HEAVY', 'HEAVY'): '┓', ('CORNER', 'BL', 'HEAVY |
| ', 'HEAVY'): '┗', ('CORNER', 'BR', 'HEAVY', 'HEAVY'): '┛', ('CORNER', 'T | | ', 'HEAVY'): '┗', ('CORNER', 'BR', 'HEAVY', 'HEAVY'): '┛', ('CORNER', 'T |
| L', 'HEAVY', 'LIGHT'): '┎', ('CORNER', 'TR', 'HEAVY', 'LIGHT'): '┒', ('C | | L', 'HEAVY', 'LIGHT'): '┎', ('CORNER', 'TR', 'HEAVY', 'LIGHT'): '┒', ('C |
| ORNER', 'BL', 'HEAVY', 'LIGHT'): '┖', ('CORNER', 'BR', 'HEAVY', 'LIGHT') | | ORNER', 'BL', 'HEAVY', 'LIGHT'): '┖', ('CORNER', 'BR', 'HEAVY', 'LIGHT') |
| : '┚', ('CORNER', 'TL', 'LIGHT', 'HEAVY'): '┍', ('CORNER', 'TR', 'LIGHT' | | : '┚', ('CORNER', 'TL', 'LIGHT', 'HEAVY'): '┍', ('CORNER', 'TR', 'LIGHT' |
| , 'HEAVY'): '┑', ('CORNER', 'BL', 'LIGHT', 'HEAVY'): '┕', ('CORNER', 'BR | | , 'HEAVY'): '┑', ('CORNER', 'BL', 'LIGHT', 'HEAVY'): '┕', ('CORNER', 'BR |
| ', 'LIGHT', 'HEAVY'): '┙', ('T', 'DOWN', 'LIGHT', 'LIGHT'): '┬', ('T', ' | | ', 'LIGHT', 'HEAVY'): '┙', ('T', 'DOWN', 'LIGHT', 'LIGHT'): '┬', ('T', ' |
| DOWN', 'HEAVY', 'HEAVY'): '┳', ('T', 'DOWN', 'LIGHT', 'HEAVY'): '┯', ('T | | DOWN', 'HEAVY', 'HEAVY'): '┳', ('T', 'DOWN', 'LIGHT', 'HEAVY'): '┯', ('T |
| ', 'DOWN', 'HEAVY', 'LIGHT'): '┰', ('T', 'UP', 'LIGHT', 'LIGHT'): '┴', ( | | ', 'DOWN', 'HEAVY', 'LIGHT'): '┰', ('T', 'UP', 'LIGHT', 'LIGHT'): '┴', ( |
| 'T', 'UP', 'HEAVY', 'HEAVY'): '┻', ('T', 'UP', 'LIGHT', 'HEAVY'): '┷', ( | | 'T', 'UP', 'HEAVY', 'HEAVY'): '┻', ('T', 'UP', 'LIGHT', 'HEAVY'): '┷', ( |
| 'T', 'UP', 'HEAVY', 'LIGHT'): '┸', ('T', 'RIGHT', 'LIGHT', 'LIGHT'): '┤' | | 'T', 'UP', 'HEAVY', 'LIGHT'): '┸', ('T', 'RIGHT', 'LIGHT', 'LIGHT'): '┤' |
| , ('T', 'RIGHT', 'HEAVY', 'HEAVY'): '┫', ('T', 'RIGHT', 'LIGHT', 'HEAVY' | | , ('T', 'RIGHT', 'HEAVY', 'HEAVY'): '┫', ('T', 'RIGHT', 'LIGHT', 'HEAVY' |
| ): '┥', ('T', 'RIGHT', 'HEAVY', 'LIGHT'): '┨', ('T', 'LEFT', 'LIGHT', 'L | | ): '┥', ('T', 'RIGHT', 'HEAVY', 'LIGHT'): '┨', ('T', 'LEFT', 'LIGHT', 'L |
| IGHT'): '├', ('T', 'LEFT', 'HEAVY', 'HEAVY'): '┣', ('T', 'LEFT', 'LIGHT' | | IGHT'): '├', ('T', 'LEFT', 'HEAVY', 'HEAVY'): '┣', ('T', 'LEFT', 'LIGHT' |
| , 'HEAVY'): '┝', ('T', 'LEFT', 'HEAVY', 'LIGHT'): '┠', ('CROSS', 'LIGHT' | | , 'HEAVY'): '┝', ('T', 'LEFT', 'HEAVY', 'LIGHT'): '┠', ('CROSS', 'LIGHT' |
| , 'LIGHT'): '┼', ('CROSS', 'HEAVY', 'HEAVY'): '╋', ('CROSS', 'LIGHT', 'H | | , 'LIGHT'): '┼', ('CROSS', 'HEAVY', 'HEAVY'): '╋', ('CROSS', 'LIGHT', 'H |
| EAVY'): '┿', ('CROSS', 'HEAVY', 'LIGHT'): '╂'} | | EAVY'): '┿', ('CROSS', 'HEAVY', 'LIGHT'): '╂'} |
| import sys, textwrap | | import sys, textwrap |
| text = sys.stdin.readline().rstrip('\n') | | text = sys.stdin.readline().rstrip('\n') |
| n | W, v_style, h_style = sys.stdin.readline().split() | n | W, Vt, Ht = sys.stdin.readline().split() |
| W = int(W) - 2 | | W = int(W) - 2 |
| lines = textwrap.wrap(text, width=W, break_long_words=False, break_on_hy | | lines = textwrap.wrap(text, width=W, break_long_words=False, break_on_hy |
| phens=False) | | phens=False) |
| bounds = [{i for i, ch in enumerate(line) if ch == ' '} for line in line | | bounds = [{i for i, ch in enumerate(line) if ch == ' '} for line in line |
| s] | | s] |
| | | |
| n | def get_h(): | n | def H(): |
| return box['H', h_style] | | return BOX['H', Ht] |
| | | |
| n | def get_v(): | n | def V(): |
| return box['V', v_style] | | return BOX['V', Vt] |
| out = [] | | out = [] |
| n | top_line = box['CORNER', 'TL', v_style, h_style] | n | top = BOX['CORNER', 'TL', Vt, Ht] |
| for i in range(W): | | for i in range(W): |
| n | top_line += box['T', 'DOWN', v_style, h_style] if i in bounds[0] els | n | top += BOX['T', 'DOWN', Vt, Ht] if i in bounds[0] else H() |
| e get_h() | | |
| top_line += box['CORNER', 'TR', v_style, h_style] | | top += BOX['CORNER', 'TR', Vt, Ht] |
| out.append(top_line) | | out.append(top) |
| for idx, line in enumerate(lines): | | for i, line in enumerate(lines): |
| words = [w for w in line.split(' ') if w] | | words = [w for w in line.split(' ') if w] |
| line_len = sum((len(w) for w in words)) + len(words) - 1 | | line_len = sum((len(w) for w in words)) + len(words) - 1 |
| n | s = get_v() + words[0] | n | s = V() + words[0] |
| for w in words[1:]: | | for w in words[1:]: |
| n | s += get_v() + w | n | s += V() + w |
| s += ' ' * (W - line_len) + get_v() | | s += ' ' * (W - line_len) + V() |
| out.append(s) | | out.append(s) |
| n | if idx + 1 < len(lines): | n | if i + 1 < len(lines): |
| curr, next = (bounds[idx], bounds[idx + 1]) | | a, b = (bounds[i], bounds[i + 1]) |
| mid = box['T', 'LEFT', v_style, h_style] | | mid = BOX['T', 'LEFT', Vt, Ht] |
| for x in range(W): | | for x in range(W): |
| n | if x in curr and x in next: | n | if x in a and x in b: |
| mid += box['CROSS', v_style, h_style] | | mid += BOX['CROSS', Vt, Ht] |
| elif x in curr: | | elif x in a: |
| mid += box['T', 'UP', v_style, h_style] | | mid += BOX['T', 'UP', Vt, Ht] |
| elif x in next: | | elif x in b: |
| mid += box['T', 'DOWN', v_style, h_style] | | mid += BOX['T', 'DOWN', Vt, Ht] |
| else: | | else: |
| n | mid += get_h() | n | mid += H() |
| mid += box['T', 'RIGHT', v_style, h_style] | | mid += BOX['T', 'RIGHT', Vt, Ht] |
| out.append(mid) | | out.append(mid) |
| last = bounds[-1] | | last = bounds[-1] |
| n | bottom_line = box['CORNER', 'BL', v_style, h_style] | n | bot = BOX['CORNER', 'BL', Vt, Ht] |
| for i in range(W): | | for i in range(W): |
| t | bottom_line += box['T', 'UP', v_style, h_style] if i in last else ge | t | bot += BOX['T', 'UP', Vt, Ht] if i in last else H() |
| t_h() | | |
| bottom_line += box['CORNER', 'BR', v_style, h_style] | | bot += BOX['CORNER', 'BR', Vt, Ht] |
| out.append(bottom_line) | | out.append(bot) |
| print('\n'.join(out)) | | print('\n'.join(out)) |