杰哥闯稻妻
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

        杰哥来到了稻妻。
        稻妻存在许多这样的解密机关,由若干个机关立方组成,当其中某个机关立方受到玩家攻击时,受到攻击的立方和其相邻的立方会顺时针旋转90°。每个机关都有一个特殊面(发紫光的那面),当所有特殊面朝向某个特定的方向时,宝箱就会出现了。
        

        特别的,当攻击第一个机关立方时,第一个、第二个、和最右边的立方都会顺时针旋转90°。攻击最右边的同理。

        另外,本题中所有给出的解密机关有且仅有5个机关立方。         
        方向描述:从玩家的视角看向解密机关,左侧面记为①,往后顺时针三个面依次记作②、③、④(看图应该能看懂吧qwq)。 当所有立方朝向第④面时(图中的状态,④就是玩家正对着的面),宝箱就会出现了。

        解密不是很难,但需要有耐心。着急搜刮整个稻妻宝箱的杰哥向你寻求帮助,希望你能写一个程序找出得到宝箱最少所需要的攻击次数,以及攻击方式。

        另外,杰哥知道游戏开发者并不会将这种解密机关设计的很难,因此10次操作内肯定是可以将所有立方朝向同一方向的。

输入描述:

输入一行,五个数。第 i 个数记作 a,则 a∈ { 1, 2, 3, 4 },ai = 1表示开始时第i个立方的特殊面朝向左侧,其余同理。

输出描述:

输出有两行,第一行一个数k,为获取宝箱最少所需要的攻击次数。(数据保证 k <= 10)        
第二行输出k个数:{ b1, b2, b3, ...... bk },第 i 个数 bi 表示第 i 次操作攻击第 bi 个立方(1 ≤ bi ≤ 5)。数据保证有解。如果有多种可行的答案序列,输出其中字典序最小的。
示例1

输入

复制
3 3 3 4 4

输出

复制
1
2
示例2

输入

复制
3 2 2 3 4

输出

复制
2
2 3

说明

3 2 2 3 4
攻击第二个变成了
4 3 3 3 4
攻击第三个:
4 4 4 4 4