# 猜数（IO交互版）

## 题目描述

评测机会在区间 $[1,10^9]$ 中选择一个整数，你应该写一个代码来猜测它。你最多可以问评测机 $50$ 个问题。

对于每一次询问，你可以向评测机询问区间 $[1,10^9]$ 中的一个整数，评测机会返回:

 - 0，如果它为答案（即评测机所选的数字），且程序应该在此之后停止询问。
 - -1，如果它小于答案。
 - 1，如果它大于答案。
 
每次询问，你需要向**标准输出**输出一个 $[1,10^9]$ 中的整数，**然后清空缓冲区**。

你可以使用如下语句来清空缓冲区：

- 对于 C/C++：`fflush(stdout)`；
- 对于 C++：`std::cout << std::flush`；
- 对于 Java：`System.out.flush()`；
- 对于 Python：`stdout.flush()`；
- 对于 Pascal：`flush(output)`；
- 对于其他语言，请自行查阅对应语言的帮助文档。

特别的，对于 C++ 语言，在输出换行时如果你使用 `std::endl` 而不是 `'\n'`，也可以自动刷新缓冲区。

然后你需要从**标准输入**中输入一个整数，代表评测机返回的结果。

## 输入格式

## 输出格式

## 提示

#### 数据规模与约定

设 $n$ 为答案。

- 对于 $50\%$ 的数据，保证 $n \leq 51$。
- 对于 $100\%$ 的数据，保证 $1 \leq n \leq 10^9$。

[本题交互库](https://www.luogu.com.cn/paste/uaece7av)。

#### 提示

本题参考程序：

```cpp
#include <cstdio>
#include <iostream>

int main() {
  for (int l = 1, r = 1000000000, mid = (l + r) >> 1, res; l <= r; mid = (l + r) >> 1) {
    std::cout << mid << std::endl;
    std::cin >> res;
    if (res == 0) {
      return 0;
    } else if (res == -1) {
      l = mid + 1;
    } else if (res == 1) {
      r = mid - 1;
    } else {
      puts("OvO, I AK IOI"); // this statement will never be executed.
    }
  }
  return 0;
}
```