棋盘由 $n \cdot n$ 个格子组成,排列成 $n$ 行 $n$ 列,行和列均从 $1$ 到 $n$ 编号。第 $i$ 行第 $j$ 列的格子坐标为 $(i, j)$。
我们希望从左上角的格子(坐标为 $(1, 1)$)走到右下角的格子(坐标为 $(n, n)$)。部分格子是被阻塞的。
我们只能在未被阻塞的格子上向右或向下移动,也就是说,从格子 $(i, j)$ 可以走到格子 $(i, j+1)$ 或 $(i+1, j)$,前提是目标格子未被阻塞。
有些棋盘只能以一种方式通过,有些则有多种方式。给定一个整数 $K$,请你设计一个边长不超过 $100$ 的棋盘,使得从 $(1,1)$ 到 $(n,n)$ 的不同路径数量恰好等于 $K$。
输入格式
输入的第一行包含一个整数 $K$($0 \le K$)。
输出格式
输出的第一行应包含一个整数 $n$($1 \le n \le 100$),表示棋盘的大小。接下来的 $n$ 行中,每一行输出一个长度为 $n$ 的字符串,只由字符 .(表示未阻塞格子)和 #(表示被阻塞格子)组成;第 $i$ 行中的第 $j$ 个字符描述格子 $(i, j)$。
在题目给定的限制下,答案总是存在的。如果存在多种答案,你的程序可以输出任意一种。
样例数据
对于输入数据:
6
一种可能的正确输出是:
4 ...# .... ##.. ###.
子任务
测试数据分为以下子任务。每个子任务的测试由一个或多个独立的测试组组成。
| 子任务 | 条件 | 分值 |
|---|---|---|
| 1 | $K \le 50$ | 15 |
| 2 | $K \le 2000$ | 15 |
| 3 | $K \le 10^9$ | 40 |
| 4 | $K \le 10^{18}$ | 30 |