#codefestivalchinaa. [code_festival_china_a]Lock

[code_festival_china_a]Lock

题目

艾丽斯有一个由nn个数字组成的密码箱,使用数字拨盘锁进行锁定。该锁的每个拨盘可以设置为数字0099之间的一个数。不幸的是,她忘记了密码(nn位)。现在,她将尝试所有可能的数字组合来解锁密码。

她每次可以执行以下其中一种操作:

  • 选择一个拨盘,将该数字加11。(如果选中的数字是99,则变为00
  • 选择一个拨盘,将该数字减11。(如果选中的数字是00,则变为99

奇怪的是,即使在尝试过程中找到了正确的密码,她也希望尝试所有的组合。但是尝试所有的10n10^n个组合是一项艰巨的工作。请通过展示如何尽量减少操作次数来帮助她。

密码箱初始时的数字组合设为00..000..0

计算并输出mm,即尝试所有数字组合所需的最少操作次数,并按顺序显示每次操作后的m+1m+1个数字组合,包括初始组合00..000..0。如果有多个可能的答案,可以随意选择其中任意一个。

检查当前数字组合是否与密码匹配时不计入操作次数。


输入

输入数据按照下列格式给出。

nn

  • 第一行是一个整数n(1n5)n (1 \leq n \leq 5),表示密码锁的位数。

输出

第一行输出一个整数mm,表示尝试所有数字组合所需的最少操作次数。

接下来的m+1m+1行中,按顺序输出试验过程中出现的数字组合。如果有多个可能的答案,可以随意选择其中任意一个。请确保在最后一行结尾处插入一个换行符。


输入示例 1


1

输出示例 1


9
0
1
2
3
4
5
6
7
8
9

不要忘记在第一行输出最少操作次数m=9m=9

接下来的行中,注意需要输出m+1m+1行,包括初始组合00


输入示例 2


2

输出示例 2


99
00
01
02
03
04
05
06
07
08
09
19
18
17
16
15
14
13
12
11
10
20
21
22
23
24
25
26
27
28
29
39
38
37
36
35
34
33
32
31
30
40
41
42
43
44
45
46
47
48
49
59
58
57
56
55
54
53
52
51
50
60
61
62
63
64
65
66
67
68
69
79
78
77
76
75
74
73
72
71
70
80
81
82
83
84
85
86
87
88
89
99
98
97
96
95
94
93
92
91
90