CF1354G.Find a Gift

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

This is an interactive problem. Don't forget to flush output after printing queries using cout.flush() or fflush(stdout) in C++ or similar functions in other programming languages.

There are nn gift boxes in a row, numbered from 11 to nn from left to right. It's known that exactly kk of them contain valuable gifts — other boxes contain just lucky stones. All boxes look the same and differ only in weight. All boxes with stones have the same weight and are strictly heavier than boxes with valuable items. But valuable gifts may be different, so the boxes with valuable items may have different weights.

You can ask no more than 5050 queries (printing an answer doesn't count). By each query you can compare total weights of two non-intersecting subsets of boxes a1,a2,,akaa_1, a_2, \dots, a_{k_a} and b1,b2,,bkbb_1, b_2, \dots, b_{k_b} . In return you'll get one of four results:

  • FIRST, if subset a1,a2,,akaa_1, a_2, \dots, a_{k_a} is strictly heavier;
  • SECOND, if subset b1,b2,,bkbb_1, b_2, \dots, b_{k_b} is strictly heavier;
  • EQUAL, if subsets have equal total weights;
  • WASTED, if the query is incorrect or the limit of queries is exceeded.

Using such queries (or, maybe, intuition) find the box with a valuable gift with the minimum index.

输入格式

The input consists of several cases. In the beginning, you receive the integer TT ( 1T5001 \le T \le 500 ) — the number of test cases.

At the beginning of each test case, you receive two integers nn and kk ( 2n10002 \le n \le 1000 , 1kn21 \le k \le \frac{n}{2} ) — the number of boxes in a row and the number of boxes with valuable gifts.

It's guaranteed that the order of boxes is fixed beforehand and that the sum of nn in one test doesn't exceed 10001000 .

输出格式

For each test case print the minimum index among all boxes with a valuable gift in the following format: "! xx " where xx ( 1xn1 \le x \le n ) — the index of the box.

Interaction

Print each query in three lines. In the first line print the sizes of subset in the following format: "? kak_a kbk_b " where kak_a and kbk_b ( 1ka,kbn1 \le k_a, k_b \le n ; ka+kbnk_a + k_b \le n ) — the corresponding sizes.

In the second line print kak_a integers a1,a2,,akaa_1, a_2, \dots, a_{k_a} ( 1ain1 \le a_i \le n ; aiaja_i \neq a_j if iji \neq j ) — indexes of boxes in the first subset.

In the third line print kbk_b integers b1,b2,,bkbb_1, b_2, \dots, b_{k_b} ( 1bin1 \le b_i \le n ; bibjb_i \neq b_j if iji \neq j ) — indexes of boxes in the second subset.

The subsets shouldn't intersect, i. e. aibja_i \neq b_j for all ii and jj .

You'll receive one of four responses described above. In the case of WASTED stop your program to avoid getting random verdict instead of Wrong Answer.

输入输出样例

  • 输入#1

    2
    2 1
    -
    -
    -
    FIRST
    -
    5 2
    -
    -
    -
    FIRST
    -
    -
    -
    SECOND
    -
    -
    -
    EQUAL
    -

    输出#1

    -
    -
    ? 1 1
    1
    2
    -
    ! 2
    -
    ? 1 1
    1
    2
    -
    ? 2 3
    4 2
    1 3 5
    -
    ? 1 1
    4
    5
    -
    ! 1

说明/提示

Additional separators "–" in the sample are used only to increase the readability of the sample. Don't print any unnecessary symbols or line breaks in your solution when you send it to the system.

Hacks are forbidden in this task.

首页