Условие недоступно на русском языке
F. 【模板】Pollard-Rho
time limit per test
2 seconds
memory limit per test
512 megabytes
input
standard input
output
standard output

这是一道交互题

给定一个正整数 n(2 ≤ n ≤ {2}60 - 1),输出它最大的质因子。

这个问题太难了,所以你有 64 次尝试的机会,对于每次尝试:

  • 你需要输出一行一个整数 m(0 ≤ m ≤ {2}63 - 1)。
  • 交互器会考虑 n 最大的质因子 p ,计算 。
  • 随后交互器会输出 d 的二进制表示中数位 1 的个数。

在这里, 代表整数 x 和 y 的按位异或运算。

显然,当交互器输出 0 时,说明你输出了正确答案,此时你应停止尝试。

Input

一行一个整数 n,保证 2 ≤ n ≤ {2}60 - 1 。

Interaction

程序交互应从读取整数 n 开始。

在进行尝试时,请输出一行一个整数 m(0 ≤ m ≤ {2}63 - 1)。

然后,你需要读入交互器的输出的一个整数,表示 d 的二进制表示中数位 1 的个数。

注意:接收到交互器的输出 0 或尝试次数达到限制后,你的程序应立即终止。

此外,在每次输出完毕后,你都需要立即 刷新缓冲区 !你可以使用如下语句来刷新缓冲区:

  • 对于 C/C++:fflush(stdout)
  • 对于 C++:std::cout << std::flush
  • 对于 Java:System.out.flush()
  • 对于 Python:stdout.flush()

对于 C++ 语言,在输出换行时如果你使用 std::endl 而不是 `\n' ,也可以自动刷新缓冲区。

Examples
Input
21

0
Output

7
Input
1234567654321

5

0
Output

1145

4649
Note

显然,你只需要编写一个高效率的质因数分解算法即可通过此题。