T130013 游园会盖章

题目描述

传智专修学院举办了一场游园活动,其中一个非常重要的环节就是收集印章。集章卡是一张高度宽度分别为 $h,w(20\le h \le 1000,50\le w \le 2000)$ 的白纸。初始情况下每个单位像素都是由 `.` 来填充(代表白色)。 现在小 A 在一个摊位上盖章。由于小 A 很喜欢这个摊位印章的样式,所以他会连续盖上 $n(1\le n \le 2000)$ 次印。这个印章是宽 50、高 20 的图形,是这样: ``` ...........................,]]OOO@@@@OOO]`........ ....................,]OO@@@@@@@@@@@@@@@@@@@@O`.... ................./O@@@@@@@@@@@@@@@@@@@@@@@@@@@@^.. ............../O@@@@@@@@@@@@@@@OOOOOOO@@@@@@@@@@@. ..........,/@@@@@@@@@@@@O/[.............[O@@@@@@@\ ........,O@@@@@@@@@@O/`..................,O@@@@@@O .......O@@@@@@@@@O`......]OO@@@O\`........O@@@@@@@ .....,O@@@@@@@@/`.....]O@@@@@@@@@@^.......O@@@@@@@ ...,/@@@@@@@O/...../@@@@@@@@@@@@@@O....../@@@@@@@0 ..=@@@@@@@O`...../@@@@@@@@@@@@@@@@^.....O@@@@@@@O. ./@@@@@@@/......O@@@@@@@@@@@@@@@O`..../@@@@@@@@O.. =@@@@@@@O......O@@@@@@@@@@@@@@@^....O@@@@@@@@@O... O@@@@@@@^.....=@@@@@@@@@@@@@O[..../@@@@@@@@@O`.... @@@@@@@O.......\@@@@@@@@O[...../O@@@@@@@@@O`...... @@@@@@@@^.........[`.......]OO@@@@@@@@@@O`........ O@@@@@@@@O\............]/@@@@@@@@@@@@O/........... =@@@@@@@OOOoo`........O@@@@@@@@@@@@/`............. ..\OOOOO*,`*..........O@@@@@@@@@O`................ .....,[[..............O@@@@@@O`................... ......................O@@@@@@O.................... ``` 由于盖章时手不太稳,所以盖章时也有可能会使这个图样旋转 180°(当然不同的字符只代表不同的颜色,字符本身不需要翻转)。 现在已经知道了小 A 的 $n$ 次盖章信息,包括左上角坐标 $x,y$,和旋转方式 $r$。也就是说,这个图样旋转后的左上角,位于集章卡的第 $x$ 行 $y$ 列的位置,集章卡的左上角坐标是 $(0,0)$。 需要特别注意的是,后盖的印章可能和之前改的印章重叠。后盖的章有颜色的部分(不是 `.` 的部分)会覆盖之前印上的图形。

输入格式

第一行三个整数 $n,h,w$ 代表印章次数,代表集章卡的高度和宽度。 接下来 $n$ 行,每行三个整数 $x,y,r$,描述每次盖章的信息。其中 $(x,y)$ 是图样(旋转后)左上角的坐标,$r(0\le r\le 1)$ 代表旋转方式,代表图样顺时针旋转 $r\times 180\degree$ 。保证印章的图案至少有一部分在集章卡内部。

输出格式

输出一个高度为 $h$,宽度为 $w$ 的字符矩阵,表示全部盖印后的集章卡的样子。评测时会忽略行末空格和输出文件末尾的回车。