/*

Wejście

Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą n (1 ? n ? 1000000) oznaczającą liczbę monet włożonych przez Bajtka do skarbonki. 
Następny wiersz zawiera opis wszystkich tych monet. Zawiera on ciąg n liczb naturalnych a1,a2,...,an (0 ? ai ? 201718), który oznacza, że wartości monet w skarbonce są równe kolejno 2a1,2a2,...,2an bajtozłotych.

Wyjście

Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę naturalną b oznaczającą, że najbardziej wartościowa z monet, jaką jest w stanie uzyskać Bajtek, ma nominał 2b bajtozłotych.

Przykład

Dla danych wejściowych:

5
3 4 1 3 3

poprawnym wynikiem jest:

5


*/

#include<iostream>
#include<string>
#include <fstream>
#include<map>
#include<vector>
#include<algorithm>
#include<cmath>

using namespace std;

int zapis_bitowy[201739];

int wykladniki[1000001];

int max_wykladnik_sumy;

int liczba_monet;

void inicjalizuj_zmienne();
void wczytaj_dane();
void wypisz_wynik();

void dodaj_liczbe(int liczba);

bool Master_Trace_Flag;
int pause;

int main(){
 
 int k,j;
 
 Master_Trace_Flag=false;
 
 inicjalizuj_zmienne();
 wczytaj_dane();
 
 for(k=1;k<=liczba_monet;k++)
  dodaj_liczbe(wykladniki[k]);
  
 wypisz_wynik();
 /*cin >> pause;*/
 
 return 0;
}


void wczytaj_dane(){
 
 int k;
 
 cin >> liczba_monet;
 
 for(k=1;k<=liczba_monet;k++)
  cin >> wykladniki[k];

 sort(wykladniki, wykladniki+liczba_monet+1);
 
 if(Master_Trace_Flag) 
  for(k=1;k<=liczba_monet;k++)
   cout << wykladniki[k] << endl;
   
}


void wypisz_wynik(){
 
 cout << max_wykladnik_sumy << endl;
 
}

void inicjalizuj_zmienne(){
	
 int k;
 
 max_wykladnik_sumy=1;
 
 for(k=1;k<=201739;k++)
  zapis_bitowy[k]=0;
}


void dodaj_liczbe(int liczba){
	
	int aktualny_wykladnik;

	aktualny_wykladnik=liczba;
	
	while(true){
	   
	 if(zapis_bitowy[aktualny_wykladnik]==0){
	 	zapis_bitowy[aktualny_wykladnik]=1;
	 	break;}
	 zapis_bitowy[aktualny_wykladnik]=0;
	 aktualny_wykladnik++;	
	}
	
	if(aktualny_wykladnik>max_wykladnik_sumy)
	 max_wykladnik_sumy=aktualny_wykladnik;
}

