아파트

시간 제한1초메모리 제한1024 MB

요약
손 2N개로 쌓은 아파트를 T번의 게임 동안 b번 회전시키며 각 게임에서 맨 아래에 남는 손의 참가자 번호를 구한다.
난이도

보통10점 중 4점

유형
시뮬레이션, 큐, 구현
정답자
아직 제출이 없습니다

문제

아~파트 아파트! 아~파트 아파트! 몇 층에 살까?

연말을 맞아 아주대학교 소프트웨어학과 알고리즘 동아리 ANSI는 다 같이 모여 아파트 게임을 TT회 진행하고자 한다. ANSI는 진행자 교선이와 NN명의 참가자로 구성되어 있다. 각 참가자에게는 11번부터 NN번까지 번호가 부여되어 있고, 참가자는 각자의 두 손을 층층이 쌓아 올려 손 아파트를 만들어 준비한다. 밑에서부터 ii번째 위치에 번호가 a_ia\_i인 참가자의 손이 자리한다. jj번째 아파트 게임의 진행 과정은 다음과 같다.

  1. 교선이가 한 양의 정수 b_jb\_j를 부른다.
  2. 참가자들이 11부터 b_jb\_j까지 수를 센다. 수를 셀 때마다 손 아파트의 맨 아래에 있는 손을 빼서 손 아파트의 맨 위에 올린다.
  3. 참가자들이 교선이가 부른 수 b_jb\_j를 셀 때 맨 아래에 손을 둔 참가자가 패배한다. 패배한 참가자는 손을 빼지 않고 그대로 둔다.

예를 들어, 손이 66개 있을 때 44를 부르면 아래에서 44번째에 손을 둔 참가자가 패배한다. 교선이는 손 아파트를 이루는 손의 총 개수보다 큰 수를 부를 수 있음에 유의하자.

ANSI는 게임의 연속성을 위해, 다음 아파트 게임을 진행할 때 이전 게임이 종료된 상태에서 손 아파트의 위치를 바꾸지 않고 새로운 게임을 시작한다. TT번의 게임에서 가장 많이 패배하는 참가자는 벌칙을 받아야 하므로, 각 게임마다 패배하는 참가자를 알아내 보자.

입력

첫 번째 줄에 참가자의 수 NN이 주어진다. (1≤N≤40)(1 \leq N \leq 40)

두 번째 줄에 아파트 게임의 횟수 TT가 주어진다. (1≤T≤5,000)(1 \leq T \leq 5\\,000)

세 번째 줄에 손 아파트에서 손의 위치에 대한 2N2N개의 수가 공백으로 구분되어 주어진다. a_ia\_i는 밑에서 ii번째에 손을 둔 참가자의 번호이다. 모든 참가자의 번호는 각각 두 번씩 등장한다. (1≤a_i≤N)(1 \leq a\_i \leq N)

네 번째 줄에 교선이가 부르는 TT개의 양의 정수 b_jb\_j가 공백으로 구분되어 주어진다. b_jb\_j는 jj번째 게임에서 교선이가 부른 수를 의미한다. (1≤b_j≤1,000)(1 \leq b\_j \leq 1\\,000)

출력

첫 번째 게임부터 패배하는 참가자의 번호를 순서대로 공백으로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    4
    2
    2 4 4 3 3 1 2 1
    3 12
    
    예상 출력
    4 1