시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB37615912042.553%

문제

Sait2000은 지문을 안 쓰는 pani를 기다리다가 너무 심심한 나머지 문제를 납치해서 직접 지문을 써버렸다!

대회 배경에 넣을 캐릭터 설정을 정하는 일은 생각보다 어려운 일이다. 아니메컵 운영진은 수많은 캐릭터 아이디어를 내봤지만, 어떤 아이디어를 내도 참고 대상인 캐릭터와 설정이 겹치는 일만 반복되었다. pani는 이 문제를 해결하기 위하여 캐릭터의 설정을 세부적으로 분류하기로 하였다!

pani의 분류에 의하면, 캐릭터의 설정은 $N$ 개의 속성 각각에 대한 속성의 값의 순서쌍으로 표현할 수 있다. $i$ 번째 속성의 값은 $1$ 이상 $a_i$ 이하인 정수로 표현된다. 그리고 만약 어떠한 두 캐릭터의 $N$ 개의 속성의 값이 모두 겹친다면, pani는 두 캐릭터의 설정이 겹친다고 정의하였다.

캐릭터 제작을 할 때 참고하기 위하여 아니메컵 운영진들은 총 $M$ 명의 캐릭터를 선정해놓았다. pani는 참고 대상인 $M$ 명의 캐릭터 그 누구와도 설정이 겹치지 않는 새로운 캐릭터를 만들어내고자 한다. 하지만 모든 캐릭터들의 모든 속성을 일일히 구하는 건 너무 힘든 작업이기 때문에, pani는 다음 작업을 총 $Q$ 번 이하로 하기로 하였다.

$k$ 번째 캐릭터의 $i$ 번째 속성의 값이 얼마인지 알아낸다.

pani를 도와 설정이 겹치지 않는 캐릭터를 만들어내는 프로그램을 작성해 보자!

입력

첫 번째 줄에 $M$, $N$, $Q$가 공백으로 구분되어 주어진다. ($1\leq M\leq Q\leq N\leq 1\,000$)

두 번째 줄에 $a_1,a_2,\cdots ,a_N$가 공백으로 구분되어 주어진다. ($2\leq a_i\leq 1\,000$)

인터랙션

다음과 같이 표준 출력 스트림(stdout)에 한 줄로 출력해서, 참고 대상인 캐릭터의 속성에 대한 질문을 할 수 있다.

  • ? $k$ $i$: 참고 대상인 캐릭터들 중 $k$ 번째 캐릭터에 대해 $i$ 번째 속성의 값 ($1\leq k\leq M$, $1\leq i\leq N$)

질문의 답은 $1$ 이상 $a_i$ 이하의 정수로 주어진다.

각 질문을 출력한 후에는 반드시 표준 출력 버퍼를 비워야 하며 (flush), 표준 입력 스트림(stdin)을 통해 질문에 대한 답을 입력받아야 한다. 질문은 최대 $Q$ 번 가능하다.

새로운 캐릭터를 제시할 때는, 다음과 같이 표준 출력 스트림에 한 줄로 출력한다.

  • ! $p_1\, p_2\,\cdots\, p_N$: 새로운 캐릭터의 속성들의 집합. $p_i$는 $i$ 번째 속성의 값을 의미한다. ($1\leq p_i\leq a_i$)

그 후에는 반드시 표준 출력 버퍼를 비워야 하며, 프로그램을 종료해야 한다. 새로운 캐릭터를 제시하는 것은 질문 횟수에 포함되지 않는다.

다음은 일부 언어에 대해, 언어 별로 표준 출력 버퍼를 비우는 방법이다.

  • C: fflush(stdout)
  • C++: std::cout << std::flush
  • Java: System.out.flush()
  • Python: sys.stdout.flush()

인터랙터는 적응적일 수 있다. 즉, 인터랙터는 질문의 답에 모순이 되지 않는다는 가정 하에, 참고 대상인 캐릭터의 속성값을 임의로 설정할 수 있다.

예제 입력 1

2 4 4
3 4 5 6

1

4

3

3

예제 출력 1



? 1 1

? 1 2

? 2 3

? 2 4

! 3 1 5 6

입출력이 어떤 방식으로 이루어지는지 이해를 돕기 위해 의도적으로 줄 간격을 조절한 것으로, 실제 입출력과는 다르다.

출처

Contest > BOJ User Contest > 아니메컵 > 아니메컵 1쿨 C번

채점 및 기타 정보

  • 예제는 채점하지 않는다.