1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<queue>
#define mp make_pair
#define f first
#define s second
#define pb push_back
#define ll long long
#define pii pair<int,int>
#ifndef getchar_unlocked
#define getchar_unlocked getchar
#endif // getchar_unlocked

using namespace std;

const int ma=202000;
int n,t[ma],mak;

int gi(){
    int wy=0;
    char c;
    while(1){
        c=getchar_unlocked();
        if(c>='0'&&c<='9')break;
    }
    while(c>='0'&&c<='9'){
        //if(c<'0'||c>'9')break;
        wy=(wy<<3)+(wy<<1)+int(c-'0');
        c=getchar_unlocked();
    }
    return wy;
}

int main(){
    n=gi();
    int a;
    for(int i=0;i<n;i++){
        a=gi();
        t[a]++;
        mak=max(mak,a);
    }
    for(int i=0;i<mak;i++){
        t[i+1]+=(t[i]>>1);
    }
    int w=mak;
    while(t[mak]>1){
        w++;
        t[mak]>>=1;
    }
    printf("%d",w);
    return 0;
}