P6161 [Cnoi2020] High Dimension

Background

> In essence, Gensokyo is high-dimensional.

Description

Cirno has caught an $n$-dimensional ant. It wants to crawl from $S(0,0,...,0)$ to $T(1,1,...,1)$. Trapped inside this $1\times1\times...\times1$ grid, the ant can move in each step only to a point adjacent in exactly one coordinate. Now Cirno wants to test you: what is the maximum number of pairwise vertex-disjoint paths from $S$ to $T$ (excluding $S$ and $T$) that the ant can find? You are also required to construct such a set of paths.

Input Format

One line with one integer $n$.

Output Format

The first line contains one integer $t$, the maximum number of paths. The next $t$ lines each contain one valid path. A valid path is written as: > $S$ [space] $P_1$ [space] $P_2$ [space] ... [space] $T$ where $P_i$ is a binary-compressed $01$ string representing an $n$-dimensional coordinate. **Do not output extra spaces.**

Explanation/Hint

**"This problem uses Special Judge."** ### Explanation of Sample 1 Path $1$: $(0,0) \rightarrow (0,1) \rightarrow (1,1)$. Path $2$: $(0,0) \rightarrow (1,0) \rightarrow (1,1)$. They have no common points except $S$ and $T$. ### Constraints **"This problem does not use bundled testdata; the testdata has multiple difficulty levels."** For 100% of the testdata, $3 \le n \le 60$. ### Attached Code Snippets - Binary packing function ```cpp /** * For only cpp11, cpp14, cpp17, cpp20. * * @param: __s : The binary high-dimension position inputed. * @return: Standard output format( U64 ). **/ unsigned long long zip( std::string __s ) { unsigned long long __r = 0; for( auto __c : __s ) { ( __r