#include <bits/stdc++.h>

#define fo(i,a,b) for (int i=(a); i<(b); i++)
#define sz(v) int(v.size())

using namespace std;

int n;
int a[100005];
int odo[100005];
int evo[100005];

int main() {
    scanf("%d", &n);
    fo(i,0,n) scanf("%d", a+i);

    int res = 0;
    fo(i,0,n) {
        int tot = 0;
        int oa = a[i];
        while (a[i] > 1) {
            res++;
            tot++;
            if (a[i] & 1) {
                a[i] = (a[i]+1)/2;
            } else {
                a[i] = a[i] / 2;
            }
        }
        if (oa & (oa-1)) {
            evo[i] = tot-1;
            odo[i] = 1;
        } else {
            evo[i] = tot;
            odo[i] = 0;
        }
    }

    //printf("res = %d\n", res);

    int tk = 0;
    for (int i = n-1; i >= 0; i--) {
        int ev = evo[i], od = odo[i];
        //printf("tk = %d, ev = %d, od = %d\n", tk, ev, od);
        int ntk = 0;
        while (ev && tk) {
            ntk++;
            ev--;
            tk--;
            res--;
        }
        while (od && tk) {
            od--;
            tk--;
            res--;
        }
        tk = ntk + ev + od;
    }
    printf("%d\n", res);
}
