这是一个交互式问题。请确保在每次查询输出后使用流刷新操作,以免将部分输出留在缓冲区中。例如,在 C/C++ 中必须使用 fflush(stdout),在 Python 中使用 sys.stdout.flush()(不要忘记 import sys),在 Java 中使用 System.out.flush()。
轮盘赌是一种博弈游戏。为了简化,我们假设其规则和步骤如下:
- 整个博弈过程由许多轮组成。
在每一轮中:
- 你可以选择一个 $x$ 并支付 $x$ 元作为赌注。$x$ 可以是区间 $[1, 10^{700})$ 内的任意正整数。
- 庄家将转动轮盘,轮盘只有两种结果,分别由黑色和白色两种颜色表示。
- 如果结果对应白色,你将从庄家处获得 $2x$ 元,这意味着你在这一轮中净赚 $x$ 元。否则,庄家将吞掉你支付的 $x$ 元,这意味着你在这一轮中输掉 $x$ 元。
- 每轮结束后,你可以选择继续博弈或直接停止。
- 两种结果的概率是相等的。这意味着它们的概率都是 $0.5$。
现在,一个奸商设置了一个轮盘游戏并诱骗人们参与。为了骗取更多的钱,他可以设定轮盘结果的概率。更准确地说,他可以提前将你获胜的概率设置为 $p$($0 < p < 1$,相应地,你输掉的概率为 $1 - p$)并在游戏结束前一直保持该概率。
不幸的是,小 A 虽然足够富有,但没能承受住诱惑,因为赌博输掉了 $y$ 元。现在他请求聪明的 ACMer——你,来帮他赢回他的钱。你不想用自己的钱去赌博。因此,他会借给你 $10^{700}$ 元——一笔巨款,希望你参与那个游戏帮他赢回他的钱(这意味着,最初你拥有 $10^{700}$ 元,你需要在某个时刻拥有至少 $10^{700} + y$ 元,并且在任何时候你的资金都必须始终为正数)。你也不想浪费时间,所以你希望在不超过 $5000$ 轮内结束博弈。
输入格式
第一行包含三个整数:$y$($1 \le y \le 1145141919810$)、$q$($1 \le q \le 100$)和 $seed$($1 \le seed \le 10^{18}$),表示小 A 输掉了 $y$ 元,且奸商将你获胜的概率 $p$ 设置为 $\frac{q}{100}$,$seed$ 被交互器用于生成你的输赢序列。你的程序不需要对其做任何处理,只需读取它即可。
你的程序将接收 "0"、"1" 或 "2"(不带双引号)作为当前轮的结果,其中:
"0"表示你在这一轮中输了;"1"表示你在这一轮中赢了,但仍未赢回足够的钱;"2"表示你在这一轮中赢了,并且已经赢回了足够的钱(在这种情况下,为了防止不必要的错误,请让你的程序立即终止以获得 "Accepted"。否则,我们无能为力,只能祝你好运)。
你的程序应该读取这些结果并做出相应的决策。
输出格式
若干行,每行的格式为 $x$(不带双引号,$x$ 是区间 $[1, 10^{700})$ 内的无前导零正整数),表示你继续游戏并支付 $x$ 元作为赌注。
交互
交互器将读取你的输出。然后它将使用 $seed$ 随机生成一个在 $[0, 1)$ 范围内的实数 $p'$,并将其与 $p$ 进行比较。如果 $p' < p$,它将发送 "0",否则它将发送 "1" 或 "2"(参见输入格式部分)。你可以认为你的输赢序列是唯一的,且由 $seed$ 决定。
在以下(包括但不限于)情况下,你可能会得到 "Wrong Answer"、"Time Limit Exceeded" 或其他错误结果。请在提交前仔细检查你的代码:
- 输出格式错误。
- 使用了超额的资金。
- 未能在 $5000$ 轮内赢回足够的钱。
样例
输入样例 1
1145141 91 9810 1 0 2
输出样例 1
114514 1145141 11451419
输入样例 2
100 100 2333 2
输出样例 2
200