조작된 복권
시간 제한2초메모리 제한1024 MB
길이 k의 티켓과 숫자 범위 c가 주어질 때, 그 티켓만 부분수열로 포함되지 않는 가장 짧은 수열을 구합니다.
문제
최근 ICPC 지니가 당신에게 사건 하나를 조작할 수 있는 능력을 주었다. 당신은 어제 복권을 한 장 샀다는 것을 떠올리고, 이 능력으로 복권 추첨 결과를 조작하기로 한다.
모든 복권은 길이가 인 수열이며, 같은 수열인 복권은 두 장이 없다. 각 수는 1 이상 이하이고, 같은 수가 한 복권에 여러 번 나올 수 있다. 예를 들어 , 이면 가능한 복권은 , , , , , , , 의 여덟 장이다.
추첨 기계는 먼저 각 수가 1 이상 이하이고 같은 수가 여러 번 나올 수 있는 유한한 수열을 고른다. 이 수열을 낙첨 수열이라고 한다. 낙첨 수열이 어떤 복권을 부분수열로 포함하면 그 복권은 낙첨 복권이다. 포함하지 않으면 당첨 복권이다. 한 낙첨 수열에 당첨 복권이 여럿일 수 있으며, 이때 상금은 당첨 복권들이 똑같이 나눈다.
예를 들어 낙첨 수열이 이면 은 당첨 복권이지만, 는 낙첨 복권이다.
당신은 자신의 복권만 당첨 복권이 되는 낙첨 수열을 만들려고 한다. 당첨 복권이 많아질수록 상금을 나눠 갖게 되므로, 낙첨 수열에는 자신의 복권을 제외한 길이 의 모든 수열이 부분수열로 포함되어야 한다.
, , 그리고 당신의 복권이 주어졌을 때, 당신의 복권만 당첨 복권이 되는 가장 짧은 낙첨 수열을 구하라. 가장 짧은 수열이 여럿이면 사전순으로 가장 앞서는 것을 출력한다.
입력
첫째 줄에 복권의 길이를 나타내는 양의 정수 가 주어진다. 둘째 줄에 복권에 적힌 수의 최댓값을 나타내는 양의 정수 가 주어진다 (). 셋째 줄에는 당신의 복권을 이루는 정수 개가 공백으로 구분되어 주어지며, 각 정수는 1 이상 이하이다.
출력
조건을 만족하는 가장 짧은 수열을 한 줄에 출력한다. 자신의 복권을 제외한 길이 의 모든 수열이 부분수열로 포함되는 수열이다. 각 수는 공백으로 구분한다. 그런 수열이 여럿이면 사전순으로 가장 앞서는 것을 출력한다.