F. 二维码生成器
time limit per test
1 秒
memory limit per test
512 MB
input
标准输入
output
标准输出

QR Code 是日常生活中常用的一种二维码,可视为记录数据信息的黑白像素矩阵,信息的形式为 01 比特串,黑色方格代表 1,白色方格代表 0。QR Code 现有 40 个版本,版本 1 的大小为 21 × 21,版本 40 的大小为 177 × 177,越大则可容纳的信息量越多。QR Code 提供数字模式,字母数字模式,字节模式等多种模式来记录数据信息。QR Code 还具备纠错功能,有 L、M、Q、H 这 4 个纠错级别,级别越高纠错能力越强,但能容纳的数据量就越少。

本题研究 QR Code 最简单的结构:QR Code 版本 1,采用数字模式,H 纠错级别,其结构如下图所示:

该结构是一个 21 × 21 的 01 矩阵,左上角坐标为 (0, 0),左下角坐标为 (20, 0),右上角坐标为 (0, 20),右下角坐标为 (20, 20)。其中黑色方格表示值固定为 1;白色方格表示值固定为 0;深灰色方格表示的值与模式和纠错级别有关,本题采用数字模式,H 纠错级别,表示的值和上图所示一致,即上图中深灰色方格填 1 则表示值为 1,填 0 则表示值为 0;浅灰色方格表示的值与存储的数据信息有关,需要通过以下几个步骤确定:

  1. 编码数据码字
  2. 生成纠错码字
  3. 码字比特流绘制
  4. 掩膜图案绘制

其中,第二步生成纠错码字需要计算生成多项式的系数,并根据生成多项式计算出余数多项式的系数。该过程较为复杂,因此本题省略前两个步骤,输入数据将直接给出第二步完成后的数据码字和纠错码字,总共为 26 个码字 c1, c2, ..., c26 (0 ≤ ci ≤ 255),你需要根据这 26 个码字的值实现后两个步骤,并输出最终的二维码结构。

第三步为码字比特流绘制。如下图所示,浅灰色方格总共有 208 个,从右下角开始按 S 形划分为 C1C2626 个区域,每个区域占 42 列共 8 个方格,区域 Ci 所填的值由码字 ci 决定。每个区域内的格子编号为 ,若区域编号方向由下至上(图中蓝色箭头所示),则区域内左上角格子编号为 0,右下角格子编号为 7,如区域 C1, C16 所示;若区域编号方向由上至下(图中绿色箭头所示),则区域内左下角格子编号为 0,右上角格子编号为 7,如区域 C4, C19 所示。区域中编号 的格子所填的值为将 ci 转换成 8 位二进制数后第 位上的值。例如,数据信息 114514 经第二步完成后 c3 = 114,转换为 8 位二进制数即为 01110010,其中第 1, 4, 5, 6 位为 1,第 0, 2, 3, 7 位为 0,因此区域 C3 编号为 1, 4, 5, 6 的格子填 1,编号为 0, 2, 3, 7 的格子填 0

第四步为掩膜图案绘制。本题采用的掩膜图案表达式为 ,即对于坐标为 (i, j) 的浅灰色方格,第三步的所填值与 异或后的结果为最终所填值。其中 [P] 表示当 P 为真时结果为 1,当 P 为假时结果为 0。请注意,只有浅灰色方格进行掩膜操作,而黑色、白色和深灰色方格都不进行掩膜操作。

现在请编写一个程序作为二维码生成器,输入数据码字和纠错码字,输出对应的 21 × 21 二维码,请用字符 表示值为 1 的方格,字符 表示值为 0 的方格。

Input

输入共三行,26 个整数,表示码字 c1, c2, ..., c26 (0 ≤ ci ≤ 255)

第一行,输入 10 个整数,表示前 10 个码字 c1, c2, ..., c10

第二行,输入 10 个整数,表示中间 10 个码字 c11, c12, ..., c20

第三行,输入 6 个整数,表示后 6 个码字 c21, c22, ..., c26

Output

输出共 21 行,每行为 21 个字符 构成的字符串,表示 21 × 21 的二维码。

Example
Input
16 24 114 128 128 236 17 236 17 72
228 6 59 233 77 169 40 48 215 80
206 191 120 191 244 59
Output
#######.#.#.#.#######
#.....#...###.#.....#
#.###.#...#...#.###.#
#.###.#.##.#..#.###.#
#.###.#..#.##.#.###.#
#.....#....##.#.....#
#######.#.#.#.#######
...........##........
..#.###.##...#...#..#
.#.#...#.........####
.#...##..###..#.#.#.#
..#.#...##.#.##..#..#
.#.#.####.###.#.#.###
........#.#...##.###.
#######...#....#..#..
#.....#.#.###..###...
#.###.#.#..#..##..#.#
#.###.#..##.##....##.
#.###.#.##....#.#...#
#.....#...#.#.....#..
#######..#..#...#.#.#
Note

输入样例为数据信息 114514 所对应的码字,若将输出样例中的字符 换成黑色方格,字符 换成白色方格,得到的 21 × 21 二维码如下图所示(赛后大家可以用手机微信上的"扫一扫"等扫码软件扫描,均可以扫出 114514):