小达莎正在学习下国际象棋。最近她遇到了这样一个问题:覆盖整个棋盘需要多少个象?如果每个格子都被覆盖,那么棋盘就被覆盖了。如果一个格子上站着一个象,或者至少有一个象攻击这个格子,那么这个格子就被覆盖了。回想一下,如果一个象位于某处,且与某个格子在同一条对角线上,并且该象与该格子之间的对角线上没有其他棋子,那么这个象就攻击该格子。
对于标准的 $8 \times 8$ 棋盘,这个问题对达莎来说太难了,所以她先在 $1 \times 1$、$2 \times 2$、$3 \times 3$ 等方形棋盘上解决了它。最终,她也成功地在 $8 \times 8$ 的棋盘上放置了象。然后她查看了提供的答案,令人惊讶的是,象的数量是对的,但题目作者放置它们的方式与她完全不同。这个问题是否还有其他解法?达莎拿起笔和纸,坐下来思考。
请解决达莎问题的推广版本。给定 $n$ 和 $k$,输出用最少数量的象覆盖 $n \times n$ 方形棋盘的第 $k$ 种字典序覆盖方案。
象的放置方式按从上到下的行进行比较,在每一行中,格子按从左到右的顺序考虑。如果在这种顺序下找到两个放置方案不同的第一个格子,那么在该格子上放置了象的方案在字典序上小于另一个方案。
输入格式
输入的第一行包含两个整数 $n$ 和 $k$:棋盘的大小和所需覆盖方案的编号($1 \le n \le 50$)。覆盖方案从 1 开始编号。保证第 $k$ 种覆盖方案存在。
输出格式
输出恰好 $n$ 行,每行包含恰好 $n$ 个字符:用最少数量的象覆盖 $n \times n$ 棋盘的第 $k$ 种字典序方案。放置象的格子用 “*”(星号,ASCII 码 42)表示,空格子用 “.”(点,ASCII 码 46)表示。
样例
输入 1
2 3
输出 1
.* .*
输入 2
3 2
输出 2
.*. .** ...