#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 1e5 + 20, INF = 1000ll * 1000 * 1000 * 1000 * 1000;
long long n, arr[MAXN];
long long dpR[MAXN][2], dpL[MAXN][2];
void left() {
  dpL[0][1] = 0;
  dpL[0][0] = -INF;
  for (int i = 1; i < n; i++) {
    dpL[i][0] =
        max(dpL[i - 1][0], dpL[i - 1][1]) + arr[i - 1] - ((arr[i - 1] + 1) % 2);
    if (arr[i - 1] == 1)
      dpL[i][1] = 0;
    else
      dpL[i][1] = dpL[i - 1][1] + (arr[i - 1] / 2 * 2);
  }
}
void right() {
  dpR[n - 1][1] = 0;
  dpR[n - 1][0] = -INF;
  for (int i = n - 2; i >= 0; i--) {
    dpR[i][0] = max(dpR[i + 1][0], dpR[i + 1][1]) + arr[i] - ((arr[i] + 1) % 2);
    if (arr[i] == 1)
      dpR[i][1] = 0;
    else
      dpR[i][1] = dpR[i + 1][1] + (arr[i] / 2 * 2);
  }
}
long long maxx(long long x, long long y, long long z, long long w,
               long long f) {
  long long ret;
  ret = max(x, y);
  ret = max(ret, z);
  ret = max(ret, w);
  ret = max(ret, f);
  return ret;
}
int main() {
  cin >> n;
  for (int i = 0; i < n - 1; i++) cin >> arr[i];
  left();
  right();
  long long ans = 0;
  for (int i = 0; i < n; i++)
    ans = maxx(ans, dpR[i][0], dpL[i][0], dpL[i][1] + max(dpR[i][1], dpR[i][0]),
               dpR[i][1] + max(dpL[i][1], dpL[i][0]));
  cout << ans << endl;
  return 0;
}
