Codeforces Round 371 (Div. 1)
B
Searching Rectangles
Codeforces
2200
原题
← AC →
翻译中…

Filya just learned new geometry object — rectangle. He is given a field consisting of $*n* × *n*$ unit cells. Rows are numbered from bottom to top with integer from $1$ to $*n*$. Columns are numbered from left to right with integers from $1$ to $*n*$. Cell, located at the intersection of the row $*r*$ and column $*c*$ is denoted as $(*r*, *c*)$. Filya has painted two rectangles, such that their sides are parallel to coordinate axes and each cell lies fully inside or fully outside each of them. Moreover, no cell lies in both rectangles.

翻译中…

Later, hedgehog Filya became interested in the location of his rectangles but was unable to find the sheet of paper they were painted on. They were taken by Sonya and now she wants to play a little game with Filya. He tells her a query rectangle and she replies with the number of initial rectangles that lie fully inside the given query rectangle. The query rectangle should match the same conditions as initial rectangles. Rectangle lies fully inside the query if each o its cells lies inside the query.

翻译中…

Filya knows Sonya really well, so is sure that if he asks more than $200$ questions she will stop to reply.

翻译中…

Input

翻译中…

The first line of the input contains an integer $*n*$ ($2 ≤ *n* ≤ 2^{16}$) — size of the field.

翻译中…

For each query an integer between $0$ and $2$ is returned — the number of initial rectangles that lie fully inside the query rectangle.

翻译中…

Output

翻译中…

To make a query you have to print "? $*x*_{1}$ $*y*_{1}$ $*x*_{2}$ $*y*_{2}$" (without quotes) ($1 ≤ *x*_{1} ≤ *x*_{2} ≤ *n*$, $1 ≤ *y*_{1} ≤ *y*_{2} ≤ *n*$), where $(*x*_{1}, *y*_{1})$ stands for the position of the bottom left cell of the query and $(*x*_{2}, *y*_{2})$ stands for the up right cell of the query. You are allowed to ask no more than $200$ queries. After each query you should perform "flush" operation and read the answer.

翻译中…

In case you suppose you've already determined the location of two rectangles (or run out of queries) you should print "! $*x*_{11}$ $*y*_{11}$ $*x*_{12}$ $*y*_{12}$ $*x*_{21}$ $*y*_{21}$ $*x*_{22}$ $*y*_{22}$" (without quotes), where first four integers describe the bottom left and up right cells of the first rectangle, and following four describe the corresponding cells of the second rectangle. You can print the rectangles in an arbitrary order. After you have printed the answer, print the end of the line and perform "flush". Your program should terminate immediately after it print the answer.

翻译中…

Interaction

翻译中…

To flush you can use (just after printing an integer and end-of-line):

翻译中…
  • fflush(stdout) in C++;
  • System.out.flush() in Java;
  • stdout.flush() in Python;
  • flush(output) in Pascal;
  • See the documentation for other languages.
翻译中…

You will get the Wrong Answer verdict if you ask more than $200$ queries, or if you print an incorrect coordinates.

翻译中…

You will get the Idleness Limit Exceeded verdict if you don't print anything (but you should) or if you forget about flushing the output (more info below).

翻译中…

Hacking.

翻译中…

The first line should contain an integer $*n*$ ($2 ≤ *n* ≤ 2^{16}$).

翻译中…

The second line should contain four integers $*x*_{1}$, $*y*_{1}$, $*x*_{2}$, $*y*_{2}$ ($1 ≤ *x*_{1} ≤ *x*_{2} ≤ *n*$, $1 ≤ *y*_{1} ≤ *y*_{2} ≤ *n*$) — the description of the first rectangle.

翻译中…

The third line contains the description of the second rectangle in the similar way.

翻译中…

样例

Input #1
5
2
1
0
1
1
1
0
1
Output #1
? 1 1 5 5
? 1 1 3 3
? 1 1 3 1
? 2 2 2 2
? 3 3 5 5
? 3 3 3 5
? 3 3 3 4
? 3 4 3 5
! 2 2 2 2 3 4 3 5
InputCopy OutputCopy
题目信息
题号
713B
时间限制
1 s
内存限制
256 MB
标签
二分
构造
交互题

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。