from sys import stdin, stdout def to_constantine(x: int)-> list[str]: bin_buffer = bin(x)[3:] rows: list[str] = [] idx = 0 for char in bin_buffer: row = ["."] * 61 # 30 padding | 30 mid row[idx + 30] = "#" rows.append("".join(row)) if char == "0": idx += 1 else: idx -=1 row = ["."] * 61 # 30 padding | 30 mid row[idx + 30] = "#" rows.append("".join(row)) indexes = [row.index("#") for row in rows] min_occur = min(indexes) max_occur = max(indexes) return [row[min_occur:max_occur + 1] for row in rows] def from_constantine(rows: list[str]) -> int: bin_buffer = "" rows = rows[::-1] for i in range(0, len(rows) - 1): if rows[i+1].index("#") < rows[i].index("#"): bin_buffer += "0" else: bin_buffer += "1" bin_buffer = "1" + bin_buffer[::-1] return int(bin_buffer, 2) def main() -> None: count_1 = int(stdin.readline()) rows_1 = [stdin.readline() for _ in range(count_1)] count_2 = int(stdin.readline()) rows_2 = [stdin.readline() for _ in range(count_2)] num = from_constantine(rows_1) + from_constantine(rows_2) result = to_constantine(num) stdout.write(f"{len(result)}\n{'\n'.join(result)}\n") if __name__ == "__main__": main()