#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace atcoder; #define int long long using mint=modint998244353; double pi=3.141592653589793128; //cout << fixed << setprecision(10); #define all(x) (x).begin(),(x).end() #define rep(i,n) for (int i=0;i<(n);++i) #define prep(i,n) for (int i=1;i<=(n);++i) #define ep(i,j,n) for (int i=j+1;i<=(n);++i) long long INF = 900000000000000; int mod=998244353; signed main(){ int v[62];v[0]=1; rep(i,61)v[i+1]=v[i]*2; int n;cin>>n; int h[n]; rep(i,n)cin>>h[i]; int l=1;int r=n+610; int u=n+1000; while(l pq; rep(i,n)pq.push(h[i]); if(l+1==r){ mid=l; while(mid>=0 && !pq.empty()){ int x=pq.top();pq.pop(); if(mid>=61){mid--;continue;} if(v[mid]>=x){mid--;continue;} x-=v[mid];pq.push(x);mid--; } if(pq.empty()){ r=l;break; } else{ break; } } while(mid>=0 && !pq.empty()){ int x=pq.top();pq.pop(); if(mid>=60){mid--;continue;} if(v[mid]>=x){mid--;continue;} x-=v[mid];pq.push(x);mid--; } // cout<