#include <bits/stdc++.h>
 
 
#define pb push_back
#define nl puts ("")
#define sp printf ( " " )
#define phl printf ( "hello\n" )
#define ff first
#define ss second
#define POPCOUNT __builtin_popcountll
#define RIGHTMOST __builtin_ctzll
#define LEFTMOST(x) (63-__builtin_clzll((x)))
#define MP make_pair
#define FOR(i,x,y) for(vlong i = (x) ; i <= (y) ; ++i)
#define ROF(i,x,y) for(vlong i = (y) ; i >= (x) ; --i)
#define CLR(x,y) memset(x,y,sizeof(x))
#define UNIQUE(V) (V).erase(unique((V).begin(),(V).end()),(V).end())
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define NUMDIGIT(x,y) (((vlong)(log10((x))/log10((y))))+1)
#define SQ(x) ((x)*(x))
#define ABS(x) ((x)<0?-(x):(x))
#define FABS(x) ((x)+eps<0?-(x):(x))
#define ALL(x) (x).begin(),(x).end()
#define LCM(x,y) (((x)/gcd((x),(y)))*(y))
#define SZ(x) ((vlong)(x).size())
#define NORM(x) if(x>=mod) x-=mod;if(x<0) x+=mod;
#define MOD(x,y) (((x)*(y))%mod)
#define ODD(x) (((x)&1)==0?(0):(1))
#define Set(N,cur) N=(N|(1LL<<cur))
#define Reset(N,cur) N=(N&(~(1LL<<cur)))
#define Check(N,cur) (!((N&(1LL<<cur))==0))
#define fast_cin ios_base::sync_with_stdio(false);cin.tie(NULL)
#define dump(x) cerr<<"~ "<<#x<<" = "<<x<<endl
//Imran addition
#define rep(i,n) for(int i = 1; i <= n; i++)
#define mem CLR
#define pf printf
#define sc scanf
#define endl "\n"
#define gi(k) scanf("%d",&k)
#define gl(k) scanf("%lld",&k)
#define NMAX 2147483647
#define LMAX 9223372036854775807LL
 
using namespace std;
 
 
#define LL long long
#define LLU long long unsigned int
typedef long long vlong;
typedef unsigned long long uvlong;
typedef pair < int, int > pii;
typedef pair < vlong, vlong > pll;
typedef vector<int> vi;
typedef vector<vlong> vl;
typedef vector<pll> vll;
 
inline vlong gcd ( vlong a, vlong b ) {
    a = ABS ( a ); b = ABS ( b );
    while ( b ) { a = a % b; swap ( a, b ); } return a;
}
 
 
const vlong inf = 2147383647;
const vlong mod = 1000000007;
const double pi = 2 * acos ( 0.0 );
const double eps = 1e-9;

#define N 200005

vlong ar[N],br[N],pdp[N][18],ndp[N][18];
int n;

vlong fp(int idx, int x) {

    vlong &res = pdp[idx][x];
    if(res != -1) return res;

    res = x+x;

    if(idx == n) return res;

     vlong tmp = ar[idx+1], val = ar[idx];
    int nx = 0;

    rep(i,x) {
        val *= 4;
    }

    while(tmp < val) {
        tmp *= 4;
        nx++;
    } 

    if(nx <= 15) {
        res += fp(idx+1,nx);
    }

    else {
        res += fp(idx+1,15);
        res += (n-idx) * (nx-15) * 2;
    }

    return res;
}

vlong fn(int idx, int x) {
    
    vlong &res = ndp[idx][x];
    if(res != -1) return res;

    res = x+x+1;

    if(idx == 1) return res;

    vlong val = br[idx], tmp = br[idx-1];
    int nx = 0;

    rep(i,x) {
        val *= 4;
    }

    while(tmp > val) {
        tmp *= 4;
        nx++;
    }

    if(nx <= 15) {
        res += fn(idx-1,nx);
    }

    else {
        res += fn(idx-1,15);
        res += (idx-1) * (nx-15) * 2;
    }

    return res;
}
 
 
int main () {
 
 	#ifdef forthright48
    freopen ( "00_input.txt", "r", stdin ); //freopen ( "00_output.txt", "w", stdout );
 	#endif

    cin >> n;

    rep(i,n) {
        gl(ar[i]);
        br[i] = ar[i] * (-2);
    }

    mem(pdp,-1);
    mem(ndp,-1);
    
    vlong ans = fp(1,0);

    for(int i = 2; i <= n; i++) {
        ans = min(ans, fn(i-1,0) + fp(i,0));
    }

	cout << ans << endl;
 
    return 0;
}

Measured memory_bytes: 68992