메가바이러스

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

해커가 메가바이러스를 만들었습니다. 바이러스의 각 복사본에는 고유한 번호가 있으며, 맨 처음 복사본의 번호는 00입니다. 매 분마다 새로운 세대의 바이러스가 만들어집니다. 세대 kk에 있는 번호 ii인 바이러스는 세대 k+1k + 1에 번호가 2i2 \cdot i2i+12 \cdot i + 1인 두 바이러스(자식)를 만듭니다. 이렇게 새로 생긴 두 바이러스 2i2 \cdot i, 2i+12 \cdot i + 1을 세대 kk의 바이러스 ii의 자식이라고 부릅니다. 바이러스 vv와 그 자식, 자식의 자식 등을 모두 합쳐 바이러스 vv의 자손이라 하고(바이러스 vv 자신도 자손에 포함됩니다), vv를 그들의 조상이라고 부릅니다. 즉, 모든 바이러스는 자기 자신의 조상이기도 합니다. 세대 번호는 00부터 시작합니다. 각 세대에 존재하는 바이러스의 번호는 다음과 같습니다.

  • 세대 00: 바이러스 00
  • 세대 11: 바이러스 00, 11
  • 세대 22: 바이러스 00, 11, 22, 33
  • 세대 33: 바이러스 00, 11, 22, 33, 44, 55, 66, 77
  • ...

세대 번호 하나와 그 세대에 속한 여러 바이러스의 번호가 주어질 때, 주어진 모든 바이러스의 공통 조상을 포함하는 가장 큰 세대 번호를 구해서 출력하는 프로그램을 작성하세요.

입력

첫째 줄에 두 정수 kknn이 공백으로 구분되어 주어집니다. kk (1k5121 \le k \le 512)는 세대 번호이고, nn (1n1501 \le n \le 150)은 읽어들일 바이러스의 개수입니다. 이어지는 nn개의 줄에는 각 줄마다 바이러스의 번호가 하나씩 주어집니다. 모든 바이러스는 세대 kk에 속하므로, 각 번호는 00 이상 2k12^k - 1 이하의 정수입니다.

출력

주어진 모든 바이러스의 공통 조상을 포함하는 가장 큰 세대 번호를 한 줄에 출력합니다.