#N,X,Q=map(int, input().split()) N=int(input()) H=list(map(int, input().split())) H=sorted(H) ng,ok=0,100+N+1 import heapq while ok-ng>1: mid=(ok+ng)//2 C=[1] for i in range(mid-1): C.append(C[-1]*2) if C[-1]>10**18: C[-1]=10**18 E=[] for h in H: heapq.heappush(E,-h) for c in C[::-1]: d=heapq.heappop(E) d*=-1 e=d-c if e>0: heapq.heappush(E,-e) if len(E)==0: break if len(E)==0: ok=mid else: ng=mid print(ok)