01树-困难版本
题号:NC246840
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

注意,本题的简单版本与困难版本的区别在于,简单版本中 n 为偶数,要求 0 和 1 的数量相等,而困难版本中 n 为奇数,要求 0 和 1 的数量相差不超过 1。

现有一个 的方格,保证 n 为奇数,初始时方格的每个格点都为空,你需要在方格的每个格点都填上 0、1 其中一个数字,然后考虑这样一张图:
  • 方格中的每一个格点视为一个点。
  • 两个数字相同的、以边相邻的方格之间视为存在一条边。
你需要构造一个填数方案并输出该 01 方格,满足:

1. 这张图中,所有 0 所在格点相互连通,但不能出现环;所有 1 所在格点相互连通,但不能出现环。
2. 方格中 0 的数量与方格中 1 的数量相差不超过1

可以证明,对于任意合法的输入均保证有解。

输入描述:

第一行输入一个正整数  , 保证 n 为奇数。

输出描述:

输出一个 n 行,每行输出一个长度为 n 的 01 字符串。

i 行的字符串 s_i 的第 j 个元素 为 0/1 表示你构造的方格的第 i 行第 j 列为 0/1。

若有多组解,输出任意一组即可。

具体可参考样例输出。
示例1

输入

复制
3

输出

复制
111
010
000

备注:

在本题的简单版本(即本场 C 题)中给出了一些合法、不合法情况的说明,不再赘述。