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
//PRZEMYSL ASSERTY
//SPRAWDZ CORNER CASE'Y, MINIMALNE I MAKSYMALNE WEJŚCIE I WYJŚCIE
//MODULO = 1
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#define REP(i,n) for(int i=0;i<(n);++i)
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define FORD(i,a,b) for(int i=(a);i>=(b);--i)
#define foreach(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define all(c) (c).begin(),(c).end()
#define scanf(...) scanf(__VA_ARGS__)?:0
#define e1 first
#define e2 second
#define mp make_pair
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int n,a,ans,ile[202000];
int main() {
	scanf("%d",&n);
	REP(i,n) scanf("%d",&a),ile[a]++;
	REP(i,201999) {
		if (ile[i]) ans=i;
		ile[i+1]+=ile[i]/2;
	}
	printf("%d",ans);
}