你受到了臭名昭著的魔术师 Zhivago 的挑战,参加他标志性的硬币游戏!游戏开始时有一堆 $n$ 枚硬币,你和 Zhivago 轮流从堆中拿取硬币,拿走最后一枚硬币的人为输。每名玩家每回合必须拿取 1、2 或 3 枚硬币,不多不少!
Zhivago 是他自己游戏的大师,并且总是会采取最优策略。然而,你被告知你处于获胜位置,并且可以击败 Zhivago 成为硬币游戏冠军。你能做到吗?
CC0, via Hippopx
交互
首先,你的程序应该读取一个整数 $1 \le n < 1000$,表示游戏开始时堆中的硬币数量。然后,重复以下过程:
- 你的程序向标准输出写入一行,形式为一个整数 1、2 或 3,代表你所做的移动。
- 在你做出移动后,你的程序应该读取一个整数 $c \in \{1, 2, 3\}$,代表 Zhivago 在他的回合拿取的硬币数量。
- 如果只剩下一枚硬币留给 Zhivago,他将输出字符串 “I give up”。此时你的程序应该终止。
在每次移动后,不要忘记刷新输出。为此,请使用:
- C++ 中的
fflush(stdout)或cout.flush(); - Java 中的
System.out.flush(); - Python 中的
stdout.flush()或print(output, flush=True); - 其他语言请参阅相关文档。
样例
输入格式 1
7
输出格式 1
2 1 3 I give up
说明
堆中初始有 $n = 7$ 枚硬币。你拿走 2 枚硬币,Zhivago 回应拿走 1 枚硬币。你拿走 3 枚硬币。由于只剩下 1 枚硬币,Zhivago 认输。