这是一个交互式问题(你的程序通过标准输入/输出与评测系统进行交互)。
给定一个整数 $N$。评测系统持有一个长度为 $N$ 的隐藏序列 $A = (A_0, \dots, A_{N-1})$,其中每个元素都是 $1$ 到 $10^5$ 之间的整数。注意,整个问题中索引均从 $0$ 开始。
对于整数 $s = 0, \dots, N - 1$ 和 $l = 1, \dots, N$,定义序列 $A(s, l)$ 如下: * 一个长度为 $l$ 的序列,其第 $i$ 个元素为 $A_{(s+i) \pmod N}$,其中 $i = 0, \dots, l - 1$。
你可以向评测系统进行最多 $20$ 次查询,格式如下: 你输出一个整数对列表 $((s_0, l_0), \dots, (s_{k-1}, l_{k-1}))$,需满足以下约束: $1 \le k \le N$ $0 \le s_i \le N - 1$ $1 \le l_i \le N$ $\sum_{i=0}^{k-1} l_i \le N$ 作为响应,评测系统返回所有满足 $A(s_i, l_i)$ 在这些序列中字典序最小的索引 $i = 0, \dots, k - 1$。换句话说,评测系统返回集合 $\{i \mid 0 \le i < k, A(s_i, l_i) = \min_{0 \le i' < k} A(s_{i'}, l_{i'})\}$。
利用这些查询,确定所有满足 $A(s, N)$ 字典序最小的 $s = 0, \dots, N - 1$ 的值。换句话说,找出集合 $\{s \mid 0 \le s < N, A(s, N) = \min_{0 \le s' < N} A(s', N)\}$。
注意,评测系统是非自适应的,这意味着序列 $A$ 在每个测试用例的交互开始前就已经固定。
输入格式
输入格式如下: $N$
- $N$ 是一个范围在 $1 \le N \le 10^5$ 内的整数。
输出格式
当你确定答案后,按以下格式输出: ! $n$ $s_0$ $s_1$ $\vdots$ $s_{n-1}$
这里 $n$ 是一个整数,每个 $s_i$ 是范围 $0 \le s_i < N$ 内的互不相同的整数,且必须满足: $\{s_0, \dots, s_{n-1}\} = \{s \mid 0 \le s < N, A(s, N) = \min_{0 \le s' < N} A(s', N)\}$。
交互
你可以通过向标准输出打印以下格式来发起查询: ? $k$ $s_0 \ l_0$ $s_1 \ l_1$ $\vdots$ $s_{k-1} \ l_{k-1}$
确保你的查询满足上述条件。 如果查询有效,评测系统将返回: $k'$ $i_0$ $i_1$ $\vdots$ $i_{k'-1}$
这里 $k', i_0, i_1, \dots, i_{k'-1}$ 是整数,$0 \le i_0 < i_1 < \dots < i_{k'-1} < k$,且 $\{i_0, i_1, \dots, i_{k'-1}\} = \{i \mid 0 \le i < k, A(s_i, l_i) = \min_{0 \le i' < k} A(s_{i'}, l_{i'})\}$。
如果你的查询无效(例如,违反了约束或超过了允许的查询次数),评测系统将返回: -1
如果收到 -1,请立即终止你的程序。
说明
- 确保在每次打印后刷新输出。否则可能会导致超时(TLE)。
- 如果你的程序产生无效输出或在交互过程中异常退出,评测系统的行为是未定义的。
- 在打印最终答案或收到 -1 后,必须立即终止程序。否则可能导致未定义行为。
- 避免在输出中包含不必要的换行符或空格,因为这些可能会被视为格式错误。
样例
输入格式 1
6
输出格式 1
? 3 0 1 1 1 3 1
说明
评测系统返回:
2 0 2
索引 0 和 2 处的序列字典序最小。
输入格式 2
? 2 0 3 3 3
输出格式 2
1 0
索引 0 处的序列字典序最小。
输入格式 3
! 1 0
说明
只有 $s = 0$ 使得序列 $A(s, N)$ 字典序最小,因此将其作为输出打印。