메가바이러스
시간 제한1초메모리 제한128 MB
이진 트리에서 세대 k에 속한 n개의 바이러스 번호가 주어질 때, 주어진 모든 바이러스의 공통 조상이 존재하는 가장 깊은 세대를 구한다.
문제
해커가 메가바이러스를 만들었습니다. 바이러스의 각 복사본에는 고유한 번호가 있으며, 맨 처음 복사본의 번호는 입니다. 매 분마다 새로운 세대의 바이러스가 만들어집니다. 세대 에 있는 번호 인 바이러스는 세대 에 번호가 와 인 두 바이러스(자식)를 만듭니다. 이렇게 새로 생긴 두 바이러스 , 을 세대 의 바이러스 의 자식이라고 부릅니다. 바이러스 와 그 자식, 자식의 자식 등을 모두 합쳐 바이러스 의 자손이라 하고(바이러스 자신도 자손에 포함됩니다), 를 그들의 조상이라고 부릅니다. 즉, 모든 바이러스는 자기 자신의 조상이기도 합니다. 세대 번호는 부터 시작합니다. 각 세대에 존재하는 바이러스의 번호는 다음과 같습니다.
- 세대 : 바이러스
- 세대 : 바이러스 ,
- 세대 : 바이러스 , , ,
- 세대 : 바이러스 , , , , , , ,
- ...
세대 번호 하나와 그 세대에 속한 여러 바이러스의 번호가 주어질 때, 주어진 모든 바이러스의 공통 조상을 포함하는 가장 큰 세대 번호를 구해서 출력하는 프로그램을 작성하세요.
입력
첫째 줄에 두 정수 와 이 공백으로 구분되어 주어집니다. ()는 세대 번호이고, ()은 읽어들일 바이러스의 개수입니다. 이어지는 개의 줄에는 각 줄마다 바이러스의 번호가 하나씩 주어집니다. 모든 바이러스는 세대 에 속하므로, 각 번호는 이상 이하의 정수입니다.
출력
주어진 모든 바이러스의 공통 조상을 포함하는 가장 큰 세대 번호를 한 줄에 출력합니다.