숨은 에이스
시간 제한60초메모리 제한512 MB
벤이 카드를 살펴본 순서가 주어지면 그 순서대로 최적 탐색이 진행되는 감소 삼중항 없는 덱 가운데 사전 순으로 가장 큰 덱을 복원합니다.
문제
에이미는 값이 1부터 까지 하나씩 적힌 카드 장을 한 줄로 놓는다. 이때 값의 수열에 길이 3인 감소 부분수열이 생기지 않도록 놓는다. 예를 들어 1, 5, 4, 6, 3, 2로 놓는 것은 5, 3, 2가 감소 부분수열이므로 규칙에 어긋난다.
에이미는 이 카드 더미를 벤에게 준다. 벤은 길이 3인 감소 부분수열이 없다는 사실은 알지만 정확한 배열은 모른다. 벤은 값이 1인 카드를 찾으려 한다. 카드를 하나 골라 값을 확인하고, 값이 1인 카드를 찾을 때까지 이 과정을 되풀이한다. 매 단계에서 벤은 지금까지 확인한 값과 어긋나지 않는 배열을 모두 따진 뒤, 앞으로 확인해야 하는 카드 수의 최댓값이 가장 작아지는 카드를 고른다.
벤은 운이 나빠서 값이 1인 카드를 찾기까지 카드 장을 모두 확인했다고 한다. 벤이 카드를 확인한 순서가 주어질 때 각 카드의 값을 구하라. 가능한 배열이 여러 개면 사전순으로 가장 큰 것을 고른다.
배열 가 배열 보다 사전순으로 크다는 것은, 두 배열이 처음으로 달라지는 자리에서 의 값이 의 값보다 크다는 뜻이다.
입력
첫 줄에 테스트 케이스 수 가 주어진다. 각 테스트 케이스의 첫 줄에는 카드 수 이 주어진다. 다음 줄에는 벤이 카드를 확인한 순서를 나타내는 정수 개가 공백 하나로 구분되어 주어진다. 번째 정수는 벤이 번째로 확인한 카드의 위치이고, 위치는 1부터 센다.
출력
각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고, 는 첫째 카드부터 째 카드까지의 값을 공백 하나로 구분해 나열한 것이다.
제한
- 확인 순서는 1부터 까지의 위치가 한 번씩 나오는 순열이다.
- 주어진 확인 순서에 대해, 문제의 조건을 모두 만족하면서 벤이 카드 장을 모두 확인해야 하는 배열이 적어도 하나 존재한다.