#yukicoder3281 Pacific White-sided Dolphin vs Monster def main(): import heapq input = __import__('sys').stdin.readline #入力受取 Hは正負反転のうえ、絶対値の大きい方から60要素のみ抽出 N = int(input()) if N <= 60: H = [- int(v) for v in input().split()] heapq.heapify(H) else: H = [0] * 60 for i, v in enumerate(input().split()): if i < 60: H[i] = - int(v) if i == 59: heapq.heapify(H) else: heapq.heappushpop(H, - int(v)) n = len(H) #部分問題: n体のモンスターを全滅させるのに必要な最小ターン数は? ok, ng = n + 60, n - 1 while abs(ok - ng) > 1: mid = (ok + ng) >> 1 Q = H[:] p = 1 << mid while (p := p >> 1): heapq.heapreplace(Q, Q[0] + p) if Q[0] >= 0: ok = mid break else: ng = mid #答えを出力 print(ok + (N - n)) main()