#CF2232D. 魔法多层蛋糕
魔法多层蛋糕
题目描述
Alice 做好了一个有 层的魔法多层蛋糕。层编号从小到大为 ,第 层最小,第 层最大。现在需要把蛋糕从厨房运到派对现场。由于不能一次搬完整个蛋糕,Alice 还准备了一个仓库作为中转。
蛋糕有魔法:第 层蛋糕当且仅当它上方恰好有 层蛋糕时可以被移动。
每次移动中,你可以从任意地点选择一层当前可移动的蛋糕,把它移动到另一个地点的一摞蛋糕顶部。如果目标地点已有蛋糕,为了保持结构,移动过去的层必须放在一层严格比它大的蛋糕上方。
共有三个地点: 表示厨房, 表示仓库, 表示派对现场。一开始所有层都在地点 ,目标是把所有层移动到地点 。
请在不超过 次移动内完成,或报告无解。
输入格式
第一行包含一个整数 ,表示测试组数。
每组测试数据第一行包含一个整数 。
第二行包含 个整数 。
输出格式
对于每组测试数据,若无解,输出 NO。
否则先输出 YES,下一行输出移动次数 ,满足 。
接下来 行,每行输出三个整数 ,表示把第 层从地点 移动到地点 。
数据范围
- 所有测试数据的 之和不超过
3
3
0 0 0
3
0 1 2
3
2 2 2
YES
7
1 1 3
2 1 2
1 3 2
3 1 3
1 2 1
2 2 3
1 1 3
YES
3
3 1 3
2 1 3
1 1 3
NO
提示
下方动图展示了测试用例 和 的解决方案可视化:


在第三个测试用例中,可以证明无法将蛋糕的所有层移动到派对地点。