이 문제는 인터랙티브 문제이다.
양의 정수 $n$이 주어지면, 채점기는 알 수 없는 길이 $n$의 01 수열 $a_1,a_2,\dots,a_n$을 생성한다. 채점기에 최대 $17$개의 질문을 하여 이 01 수열에서 1의 개수, 즉 $\sum\limits_{i=1}^n a_i$를 구하여라. 적어도 하나의 1이 있음이 보장된다.
각 질문에서는 여러 위치 $i_1,i_2,\dots,i_k$를 선택할 수 있다. $I=\{i_1,i_2,\dots,i_k\}$라 하면, 채점기는 $(\sum\limits_{j\in I} a_j) \cdot (\sum\limits_{j\notin I} a_j)$의 값을 반환한다.
입력
첫 번째 줄에는 이 01 수열의 길이를 나타내는 양의 정수 $n$ $(1\le n\le 10^5)$이 주어진다.
인터랙션
질문하려면 다음 형식으로 한 줄을 출력하여라 (따옴표는 포함하지 않는다):
? k i_1 i_2 ... i_k $(1\le k\le n,1\le i_1< i_2< \dots< i_k\le n)$.
정답을 출력하려면 다음 형식으로 한 줄을 출력하여라 (따옴표는 포함하지 않는다):
! s, 여기서 $s=\sum\limits_{i=1}^n a_i$이다.
정답 출력 자체는 질문 횟수에 포함되지 않는다.
인터랙터는 비적응형이다. 즉, 참가자가 질문을 하기 전에 정답이 이미 정해져 있으며, 참가자가 하는 질문에 따라 달라지지 않는다.
각 질문을 출력한 뒤에는 줄바꿈을 출력하고 출력 버퍼를 비우는 것을 잊지 말아라.
버퍼를 비우려면 다음 구문을 사용할 수 있다:
- C/C++:
fflush(stdout) - C++:
std::cout << std::flush - Java:
System.out.flush() - Python:
sys.stdout.flush()
예제
입력 1
3 2
출력 1
? 2 1 3 ! 3
입력 2
3 0 0
출력 2
? 1 1 ? 1 2 ! 1
참고
첫 번째 예제의 숨겨진 수열은 $[1,1,1]$이고, 두 번째 예제의 숨겨진 수열은 $[0,1,0]$이다.