给定一个 $1$ 到 $n$ 的排列 $p$。
在一次操作中,我们可以选择 $k > 0$ 个下标 $1 \le x_1 < x_2 < \dots < x_k \le n$,并将排列中对应这些下标的元素向右循环移位: $$p_{x_2} := p_{x_1}, p_{x_3} := p_{x_2}, p_{x_4} := p_{x_3}, \dots, p_{x_k} := p_{x_{k-1}}, p_{x_1} := p_{x_k}$$
对于给定的 $k$,执行此操作的代价为 $\frac{1}{k}$ 美元。 你的目标是使用最多 $2$ 美元的代价将给定的数组排序。
- 对于评测系统,精确的代价计算方式为 $10^{-8} \lceil \frac{10^8}{k} \rceil$。
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 5 \cdot 10^3$)。 第二行包含 $n$ 个整数 $p_1, p_2, \dots, p_n$ ($1 \le p_i \le n$),表示待排序的排列。保证 $p_i$ 构成一个排列。
输出格式
第一行输出一个整数 $m$,表示你使用的操作次数。 接下来输出 $m$ 行。 第 $i+1$ 行包含一个长度为 $n$ 的二进制字符串 $s_i$。如果 $s_i$ 的第 $j$ 个字符为 $1$,则表示 $j$ 是第 $i$ 次循环移位操作涉及的下标(如果第 $j$ 个字符为 $0$,则表示不涉及)。 这 $m$ 行中的每一行必须至少包含一个字符 '1'。
样例
样例输入 1
3 2 1 3
样例输出 1
4 011 110 111 011
样例输入 2
4 1 2 3 4
样例输出 2
0