#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
template <class T1, class T2>
inline void gmax(T1 &a, T2 b) {
  a = max(a, b);
}
long long l[maxn], r[maxn], odd[maxn];
int n;
long long a[maxn];
int cal(int x) {
  if (x % 2 == 1) return x - 1;
  return x;
}
set<long long> s;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n - 1; i++) scanf("%lld", &a[i]);
  for (int i = 1; i < n - 1; i++) {
    if (a[i - 1] > 1) {
      l[i] = l[i - 1] + cal(a[i - 1]);
    }
  }
  for (int i = n - 2; i >= 0; i--) {
    if (a[i] > 1) {
      r[i] = r[i + 1] + cal(a[i]);
    }
  }
  for (int i = 0; i < n - 1; i++) {
    odd[i] += cal(a[i] - 1) + 1;
    if (i > 0) odd[i] += odd[i - 1];
  }
  long long ans = l[0] + r[0];
  s.insert(l[0]);
  for (int i = 1; i < n; i++) {
    s.insert(l[i] - odd[i - 1]);
    long long x = *--s.lower_bound(1LL * 1e16);
    gmax(ans, r[i] + odd[i - 1] + x);
  }
  printf("%lld\n", ans);
  return 0;
}
