#include using namespace std; using ll = long long; bool OK(const vector& A, int n, int d) { priority_queue pque; for (int i = 0; i < n; i ++) pque.push(A[i]); for (int i = d-1; i >= 0; i --) { if (pque.empty()) break; ll a = pque.top(); pque.pop(); a -= (1ll << i); if (a > 0) { pque.push(a); } } return pque.empty(); } int main () { int N; cin >> N; std::vector A(N); for (auto& a : A) cin >> a; sort(A.begin(), A.end()); for (int i = 1; i <= 60; i ++) { if (OK(A, N, i)) { cout << i << endl; return 0; } } int n = 1; while (OK(A, n, 60)) n ++; n --; cout << 60 + (N - n) << endl; }