262144

이웃한 같은 수를 1 큰 수로 합치는 과정을 반복해 만들 수 있는 가장 큰 수를 구합니다.

보통6동적 계획법구간면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

베시는 스마트폰 게임을 좋아한다. 요즘 즐기는 게임은 1 이상 40 이하의 정수 NN개로 이루어진 수열에서 시작한다.

값이 같은 두 수가 이웃해 있으면 그 둘을 하나로 합쳐서 원래 값보다 1 큰 수를 만들 수 있다. 예를 들어 7이 두 개 이웃해 있으면 8 하나로 합칠 수 있다. 합치기는 원하는 만큼 반복할 수 있고, 이웃한 같은 값의 쌍이 여럿이면 어느 쌍을 합칠지 매번 고른다.

게임의 목표는 가장 큰 수를 만드는 것이다. 수열이 주어질 때 만들어 낼 수 있는 가장 큰 수를 구하라.

입력

첫째 줄에 수열의 길이 NN이 주어진다 (2N2621442 \le N \le 262144).

다음 NN개 줄에 수열의 원소가 한 줄에 하나씩 주어진다. 각 원소는 1 이상 40 이하의 정수이다.

출력

만들 수 있는 가장 큰 수를 한 줄에 출력한다. 한 번도 합칠 수 없으면 수열에 있는 가장 큰 수가 답이다.

힌트

수열 1 1 1 2를 보자. 두 번째 1과 세 번째 1을 합치면 1 2 2가 되고, 남은 두 2를 합쳐 3을 만든다. 반면 첫 번째 1과 두 번째 1을 먼저 합치면 2 1 2가 되어 더는 합칠 수 없다. 어느 쌍을 먼저 합치는지가 결과를 바꾼다.