#CF2135D1. RiOI编辑器(简单版)

RiOI编辑器(简单版)

这是该问题的简单版本。
简单版与困难版的区别在于:简单版中,所有查询的单词长度总和没有限制。
只有当你解决了所有版本的问题,才能进行 Hack。

这是一个交互题


题目背景

RiOI 团队最近开发了一个名为 RiOI 编辑器的文本编辑器。
编辑器正好使用一个整数参数 WW1W1051 \le W \le 10^5)——每行的宽度

由于你不懂 RiOI 语言,从你的角度看,单词之间的区别仅在于它们的长度。
因此,一篇长度为 nn 的文章被定义为一个由 nn 个正整数构成的序列 aa,其中 aia_i 是文章中第 ii 个单词的长度。

RiOI 编辑器按照以下方式在屏幕上显示文章 [a1,a2,,an][a_1, a_2, \dots, a_n]

  • 如果 max(a1,a2,,an)>W\max(a_1, a_2, \dots, a_n) > W,编辑器无法显示这篇文章;
  • 否则,编辑器可以按如下过程显示文章:
    • 初始时,l=1l = 1s=0s = 0
      整个过程中,ll 表示当前行数,ss 表示当前最后一行的所有单词长度之和。
    • 然后对每个 i=1,2,,ni = 1, 2, \dots, n
      • 如果 s+aiWs + a_i \le W,则将该单词插入到当前行的末尾:ll 不变,ss 增加 aia_i
      • 否则,将该单词插入到新的一行:ll 增加 11ss 变为 aia_i
    • 显示文章所需的总行数就是最终的 ll

你对编辑器非常感兴趣,决定通过输入一些文章并观察显示所需行数来找出 WW 的值。


交互规则

你可以向评测系统最多发出 22 次查询
每次查询,你输入一篇文章 [a1,a2,,an][a_1, a_2, \dots, a_n]1n1051 \le n \le 10^5),评测系统会返回:

  • 如果可以显示,返回显示这篇文章所需的总行数
  • 如果无法显示(存在 ai>Wa_i > W),返回 00

输入格式

每个测试文件包含多个测试用例。
第一行一个整数 tt1t101 \le t \le 10),表示测试用例数量。
接下来是交互过程。


交互过程(对每个测试用例)

你可以进行至多 22 次查询
查询格式:

? n a1 a2 ... an
  • 1n,ai1051 \le n, a_i \le 10^5
  • 输出后,评测系统会返回一个整数(含义见上)。

当你确定 WW 的值后,输出:

! W
  • 输出答案不计入 22 次查询
  • 之后继续处理下一个测试用例,或如果这是最后一个则结束程序。

每次输出查询或答案后,必须刷新输出缓冲区,否则会得到 Idleness limit exceeded。


注意事项

  • 如果交互过程中读到 1-1,说明你的查询非法或发生错误,此时必须立即退出程序,否则可能得到任意评测结果。
  • 本题的交互器是自适应的,即 WW 可能在交互过程中变化,但保证始终存在至少一个整数 WW 满足所有查询。

Hack 格式

Hack 时,第一行输入格式为:

t manual

接下来 tt 行,每行一个整数 WW1W1051 \le W \le 10^5)。

示例 Hack 输入:

2 manual
20
1

示例

输入

2

2

1


0

输出

? 5 1 9 4 6 1

? 2 10 10

! 20
? 1 2

! 1

解释

  • 第一个测试用例:
    • 第一次查询:单词总长 1+9+4+6+1=211+9+4+6+1=21,显示用了 22 行 → W<21W < 21
    • 第二次查询:单词总长 10+10=2010+10=20,显示用了 11 行 → W20W \ge 20
    • 因此 W=20W = 20
  • 第二个测试用例:
    • 第一次查询:无法显示 → W<2W < 2,所以 W=1W = 1

注意

  • 数字和公式前后已加上 ...... 符号,符合 LaTeX 格式。