#include <bits/stdc++.h>
using namespace std;
string getBin(long long num) {
  string res = "";
  while (num) {
    res += ((num & 1) + '0');
    num /= 2;
  }
  return res;
}
void main2() {
  int n;
  n = ({
    int t;
    scanf("%d", &t);
    t;
  });
  long long a[n];
  for (int i = 0, _n = n; i < _n; i++)
    a[i] = ({
      long long t;
      scanf("%lld", &t);
      t;
    });
  map<int, int> my;
  for (int i = 0, _n = n; i < _n; i++) my[a[i]]++;
  map<long long, int> f;
  for (__typeof((my).begin()) it = (my).begin(); it != (my).end(); ++it) {
    int x = (*it).second;
    int num = (*it).first;
    string s = getBin(x);
    for (int i = 0, _n = (int)(s).size(); i < _n; i++) {
      if (s[i] == '1') {
        if (f[(long long)i + num] == 0)
          f[(long long)i + num] = 1;
        else {
          long long k = 1;
          long long temp = (long long)(i + num) * k;
          while (f[temp] == 1) {
            k *= 2ll;
            f[temp] = 0;
            temp = (long long)(i + num) * k;
          }
          f[temp] = 1;
        }
      }
    }
  }
  long long mx = 0, sz = 0;
  for (__typeof((f).begin()) it = (f).begin(); it != (f).end(); ++it) {
    if ((*it).second != 0) sz++;
    mx = max(mx, (*it).first);
  }
  long long cnt = (mx + 1) - (sz);
  printf("%lld\n", cnt);
}
int main() { main2(); }
