아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

디지털 콘텐츠 보호

시간 제한2초메모리 제한128 MB

요약
해킹된 단말 키를 제외하고 정상 플레이어 전부를 덮는 가장 작은 미노출 노드 키 집합의 식별자를 오름차순으로 출력합니다.
난이도

보통10점 중 7점

유형
그리디, 트리, 재귀
정답자
아직 제출이 없습니다

문제

댄은 디지털 콘텐츠 보호 회사에서 일한다. 이 회사는 ACM(Anti Content Misuse) 표준에 맞춰 블루레이 디스크의 콘텐츠를 보호한다.

ACM 표준은 다음과 같이 동작한다. 블루레이 재생 장치가 2n2^n대 있다고 하자. 이 장치를 높이 nn인 완전 이진 트리의 잎에 하나씩 대응시키므로, 루트에서 잎까지 가는 경로는 모두 간선 nn개로 이루어진다. 트리의 각 노드 uu에는 식별 번호가 붙어 있고, 임의로 만든 키 kuk_u가 하나씩 들어 있다. 식별 번호는 이렇게 매긴다. 루트 rr의 번호는 11이고, 번호가 ii인 내부 노드의 왼쪽 자식은 2i2i, 오른쪽 자식은 2i+12i+1이다. 이 규칙을 쓰면 모든 노드가 서로 다른 번호를 받는다. 노드에 든 키는 사용자에게 공개되지 않지만 제조사는 알고 있다. 각 재생 장치의 번호는 그 장치에 대응하는 잎의 식별 번호 ii (2n≤i≤2n+1−12^n \le i \le 2^{n+1}-1)이다. 제조사는 루트에서 잎 ii까지 가는 경로에 있는 노드의 키를 모두 장치 ii에 심는다.

디스크의 콘텐츠를 암호화할 때 회사는 마스터 키라고 부르는 임의의 키 kk를 만든다. 먼저 kk를 루트의 키 krk_r로 암호화해서 디스크 헤더에 기록하고, 콘텐츠는 kk로 암호화해서 디스크에 기록한다. 재생 장치는 자신에게 심긴 krk_r로 헤더를 풀어 마스터 키 kk를 얻은 다음, 그 kk로 콘텐츠를 푼다.

그런데 재생 장치 집합 RR에 심긴 키가 해커에게 털려 인터넷에 공개됐다. 공개된 키로는 마스터 키를 암호화할 수 없다. 모든 장치에 krk_r가 들어 있으니 위의 방식은 더 이상 쓸 수 없다. ACM 표준은 이런 상황에 대비한 방법을 정해 두었다. 헤더가 길어지는 대신 새 디스크의 콘텐츠를 안전하게 암호화하는 방법이다. 아직 공개되지 않은 키의 집합 KK를 고르되, RR에 속하지 않은 장치라면 어느 것이든 KK에 속한 키를 적어도 하나 심고 있도록 고른다. 그리고 마스터 키 kk를 KK의 키 k′k'마다 따로 암호화해서 헤더에 넣는다. 즉 헤더에는 암호문이 ∣K∣|K|개 들어간다. 이렇게 하면 털리지 않은 장치는 헤더의 암호문 중 적어도 하나를 풀어 마스터 키 kk를 얻는다. ∣K∣|K|가 작을수록 헤더가 짧아진다. 털린 장치의 번호가 주어질 때, 크기가 가장 작은 KK를 구해서 댄을 도와주자.

입력

입력은 테스트 케이스 하나로 이루어지고, 두 줄이다. 첫째 줄에 정수 nn과 ∣R∣|R|이 주어진다. (1≤n≤621 \le n \le 62, 1≤∣R∣≤10001 \le |R| \le 1000) ∣R∣|R|은 키가 공개된 장치의 집합 RR의 크기다. 둘째 줄에 키가 공개된 장치의 식별 번호 ∣R∣|R|개가 주어진다. 털리지 않은 장치가 적어도 하나 있다.

출력

위 조건을 만족하면서 크기가 가장 작은 KK에 대해, KK의 키가 들어 있는 노드의 식별 번호를 증가하는 순서로 공백 하나씩 두고 출력한다. 조건을 만족하는 최소 크기의 KK는 하나뿐이다.

예제2

  1. 예제 1

    입력
    2 1
    5
    
    예상 출력
    3 4
    
  2. 예제 2

    입력
    3 2
    8 15
    
    예상 출력
    5 6 9 14